(四)Flask——配置详解

news/2024/2/28 2:14:57

一、配置:

Flask中的配置文件是一个flask.config.Config对象(继承字典)。后续会剖析源码瞅瞅。

基本方法:

  1. 直接设置配置项——可以直接在应用程序中设置配置项,而不使用配置文件或环境变量。例如,在应用程序中使用以下代码设置配置项:
from flask import Flaskapp = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'GuHanZheIsCool'

开头讲了Config对象继承字典,所以还可以使用app.config.update(…)。

  1. 使用配置文件——将所有的配置项写入一个配置文件中,并通过app.config.from_pyfile()方法导入。例如,在应用程序的根目录下创建一个名为config.py的配置文件,然后使用以下代码导入配置:
from flask import Flaskapp = Flask(__name__)
app.config.from_pyfile('config.py')

config.py配置文件示例:

DEBUG = True
SECRET_KEY = 'GuHanZheIsCool'
DATABASE_URI = 'mysql://user:password@localhost/demodatabase'
  1. 使用环境变量——将配置项以环境变量的形式设置,并通过app.config.from_envvar()方法导入。例如,在终端或命令行中设置环境变量FLASK_CONFIG为配置文件的路径,然后使用以下代码导入配置:
from flask import Flaskapp = Flask(__name__)
app.config.from_envvar('FLASK_CONFIG')
  • 但是,在真实开发时,我们会面临一个问题——一般一个项目会有测试、开发和生产三大环境,这三大环境下的配置会各有不同,比如不同的数据库、不同的cookie配置等。所以Flask为我们提供了一个非常适合开发的解决方法。如下:

真实开发使用的方法:

  • 使用类配置——创建一个配置类,将所有的配置项作为类的属性,并通过app.config.from_object()方法导入。例如,创建一个名为Config的配置类,然后使用以下代码导入配置:
from flask import Flaskapp = Flask(__name__)
# 配置文件              导入settings.py文件里的DevelopmentConfig类对象里的所有配置项
app.config.from_object("settings.DevelopmentConfig")@app.route('/index', methods=['GET', 'POST'])
def index():return 'hello world'if __name__ == '__main__':app.run('localhost', 4000)
  • 同级目录下的settings.py文件:
import osclass BaseConfig(object):"""Base Configuration"""# Root path of projectPROJECT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))DEBUG = TrueSECRET_KEY = 'GuHanZheIsCool'# Redis configurationREDIS_URL = os.environ.get("REDIS_URL")# File settingUPLOAD_FILE_FOLDER = "./project/data"    # 上传文件存储路径FILE_MAX_SIZE = 30 * 1024 * 1024class ProductionConfig(BaseConfig):"""Production Configuration"""DEBUG = Falseclass DevelopmentConfig(BaseConfig):"""Development Configuration"""passclass TestingConfig(BaseConfig):"""Testing Configuration"""pass

在 Flask 中,配置文件通常是一个 Python 模块,其中包含各种 Flask 配置选项的值。以下是 Flask 配置文件中可设置的一些基本选项:

  1. DEBUG: 是否启用调试模式,如果设置为 True,可以在网页中看到详细的错误信息和调试信息。同时会使我们的项目自动重新加载——在调试模式下,如果应用程序的代码发生更改,服务器会自动重新加载应用程序,以便立即反映代码的修改,而无需手动重启服务器。

  2. SECRET_KEY: secret key 是 Flask 中加密cookie所需的密钥,它是加密算法的“种子”,确保加密的安全性。需要保证每个应用程序都有一个固定的密钥,建议使用生成随机密钥的工具生成一个。

  3. SQLALCHEMY_DATABASE_URI: 指定 SQLite、MySQL 或 PostgreSQL 数据库的 URI,表示要连接到的数据库。

  4. SQLALCHEMY_TRACK_MODIFICATIONS: 是否启用 SQLAlchemy 的跟踪修改。默认值是 False。要禁用跟踪修改,可以将其值设置为 False

  5. CACHE_TYPE: 缓存类型,支持 SimpleCache、RedisCache 和 MemcachedCache。

  6. CACHE_DEFAULT_TIMEOUT: 默认缓存时间,单位为秒。

  7. SESSION_TYPE: session类型,支持 Redis、Memcached、Filesystem 等。

  8. SESSION_COOKIE_NAME: session cookie 名称。

  9. SESSION_COOKIE_SECURE: 是否使用安全 cookies,在使用 HTTPS 协议时可以设置为 True

  10. SESSION_PERMANENT: cookie 是否永久有效。

  11. SESSION_FILE_DIR: 文件存储 session 时的保存路径。

  12. UPLOAD_FOLDER: 文件上传时的保存路径。

上面只是Flask 配置文件中的一些基本选项,详细需要查看 Flask 官方文档,了解更多有关配置选项的信息。

以下是Flask官方文档中关于配置项的一些开发中常需查询的链接:

  • Flask配置文档:https://flask.palletsprojects.com/en/2.0.x/config/
  • Flask配置字典的说明:https://flask.palletsprojects.com/en/2.0.x/api/#configuration
  • Flask开发服务器配置选项:https://flask.palletsprojects.com/en/2.0.x/server/
  • Flask应用程序的配置模式:https://flask.palletsprojects.com/en/2.0.x/patterns/appfactories/
  • Flask-WTF扩展的配置选项:https://flask-wtf.readthedocs.io/en/0.15.x/config.html

在这些文档中,有Flask配置项的详细说明和示例。提供了关于如何设置和使用配置项的详细说明,以及每个配置项的作用和默认值。


http://www.ppmy.cn/news/807241.html

相关文章

pytorch简介

Pytorch简介 要介绍Pytorch之前,不得不说以下Torch。Torch是一个由大量机器学习算法支持的科学计算框架。是一个与numpy类似的张量操作库,其特点是特别灵活,但因其采用小众的编程语言Lua,所以流行度不高,这也就有了Pytorch的出现…

camera 花屏

1. 在贴纸 等其他模式,切换屏幕比例, 偶现花屏 原因是因为, 切换屏幕比例时 修改了mSurfaceView 的 size, 导致数据算法和之前的数据不匹配了 优化方案: 切换屏幕比例的时候 获取帧数据进行高斯模糊,覆盖下…

xrdp出现雪花屏,闪退怎么办?

文章 win10 远程桌面 ubuntu16 介绍了如何用xrdp从win10电脑远程连接ubuntu16服务器。 但是,当sudo user之外的用户登陆时,会出现雪花屏,闪退的现象?原因是什么呢? 如文章 win10 远程桌面 ubuntu16 中介绍的&#x…

macOS下使用OpenGL做离屏渲染

有时,我们想通过GPU做一些视频、图像处理,而处理的结果不需要显示在显示器上,而是直接交给主存,这时候我们可以通过OpenGL的 离屏渲染(Offscreen Rendering)来实现。 由于我们不需要将渲染好的像素显示到屏…

mac外接显示器经常没反应

分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://www.cbedai.net/gnailoug/ 一、问题描述 前段时间朋友给我了一个绿联三合一转换器(hdmi高清接口…

使用GPU Instancing屏幕花屏问题

1)使用GPU Instancing屏幕花屏问题 2)如何优化AssetBundle大小 3)如何使用GPU Skinning提升性能 4)iOS上Shader里tex2D采样偏移的问题 5)如何管理销毁拍摄的内置深度图 这是第184篇UWA技术知识分享的推送。今天我们继…

卡顿与花屏问题

卡顿问题 视频卡顿是在实时视频通话场景中非常重要的一个问题。卡顿率也是实时通话场景中一个非常重要的指标。一般来说,人眼在帧率达到 10fps 并且均匀播放时就不太能看出来卡顿了。如果两帧之间的播放时间间隔超过了 200ms,人眼就可以明显看出卡顿了。那一般什么情况下会导…

MAC OpenGL报错

MAC OpenGL报错 报错问题:在Mac上找不到OpenGL Traceback (most recent call last): File “/opt/miniconda3/lib/python3.8/site-packages/OpenGL/platform/darwin.py”, line 35, in GL return ctypesloader.loadLibrary( File “/opt/miniconda3/lib/python3.8/…

QuickJump使用教程

配置自己的文件夹和网址 D:\phpstudy\COM\phpstudy_pro.exe | D:\phpstudy\liuya\wp-content\themes\lzf

超经典C++益智游戏Number Maze

下面是一个复杂的C益智游戏&#xff0c;名为"Number Maze"&#xff0c;玩家需要通过移动数字来解决迷宫。 #include <iostream> #include <vector> #include <utility> #include <algorithm> #include <ctime> #include <cstdlib&…

MPU9250简单快速更改MPL驱动,方便使用MPL和DMP

附件准备材料&#xff1a;我自己的资料MPU9250.c和MPU9250.h 1&#xff0c;使用stm32cubemx配置好IIC 2&#xff0c;在c/c处加入宏定义MPU9250,EMPL 最后为&#xff1a; USE_HAL_DRIVER,STM32F103xE,MPU9250,EMPL3&#xff0c;加入对应的lib 4&#xff0c;将驱动库加入工程&am…

MC74HC595驱动

/** ****************************************************************************** * @file V_MC74HC595.h * @author LuJ * @version V3.5.0 * @date 2015-03-31 * @brief 移位寄存器头文件管理 ***********************************************…

蓝牙模块 HC-06

蓝牙模块 HC-06 基于STM32f103小白使用教程 使用TCL转串口使蓝牙模块进入AT指令模式AT指令分析&#xff1a;注意&#xff1a;串口回调函数&#xff1a;串口助手配置手机蓝牙连接APP手机扫描页面&#xff1a;发送文本界面按键窗口页面总结 HC-06蓝牙模块视图 使用TCL转串口使蓝…

TC389-MCMCAN模块

TC389-MCMCAN模块 0 前言1 MCMCAN模块2 CAN Node的配制2.1 初始化2.2 Normal Operation2.3 CAN FD Operation 3 CAN Node的Receive3.1 数据格式 Rx Buffer3.2 数据接收管理3.2.1 Dedicated Rx Buffer3.2.2 Rx FIFO 3.3 过滤器 Filter 4 CAN Node的Transmission4.1 数据格式 Tx …

Jetson nano i2c教程(MPU6050 + PCA9685)

首先介绍nano板子上的i2c相关的硬件信息&#xff1a; 安装所需要的i2c库 sudo apt-get install l -y i2c-tools完成nano中io与i2c设备的硬件接线。 本次案例使用的是PCA9685和MPU6050&#xff0c;这两个设备的SCL和SDA直连&#xff0c;其次完成与nano主板上IO连接&#xff0…

STM32 IO口模拟I2C+驱动MPU6050

一年前写的博客&#xff0c;没有把驱动代码分享出来是我疏忽了&#xff0c;可以到网盘下载驱动代码 链接&#xff1a;https://pan.baidu.com/s/1SDVQfyoOoycCY_6eSXamlQ 密码&#xff1a;ipj7 之后运用MPU6050做了一个平衡小车&#xff0c;可以通过蓝牙控制&#xff0c;下载链…

MCP2517FD——模块说明及驱动移植——HAL库开发

最近使用到了SPI转CAN模块——MCP2517FD&#xff0c;在进行驱动移植的时候遇到了一点问题&#xff0c;官方的驱动年代久远&#xff0c;本身包含了许多的错误&#xff0c;所以就借此机会将驱动修改以及使用的过程记录一下。 这位博主对于MCP2517FD模块的介绍很详细&#xff0c;推…

STC89C52驱动四线蓝牙模块

#include<reg52.h> void Com_Int(void) interrupt 4 {EA 0;if(RI 1) { RI0; P1 SBUF;}EA 1; } void UsartConfiguration() { SCON0X50; //SCON 是一个特殊功能寄存器&#xff0c;用以设定串行口的工作方式、接收/发送控制以及设置状态标志 TMOD0X20; …

LM2596降压DCDC芯片

LM2596是一款经典的降压DCDC芯片&#xff1b;内部开关频率只有150KHz&#xff0c;最高效率90%左右&#xff08;输入25V&#xff0c;输出12V&#xff09;。3.3V固定输出版效率只有约73%。 某宝上随手一搜就有很多这颗芯片的板子&#xff1a; 最大输出电流&#xff1a;3A 输入电…

【Arduino】蓝牙模块HC-05

文章目录 1 蓝牙模块HC-051.1 简介1.2 管脚 2 Arduino与HC-05连接3 蓝牙功能测试3.1 代码3.2 蓝牙配置3.3 蓝牙与手机连接 4 两个蓝牙模块相互连接 1 蓝牙模块HC-05 1.1 简介 HC-05蓝牙模块是一种基于蓝牙协议的简单无线通信设备。该模块基于BC417单芯片蓝牙IC&#xff0c;符…
最新文章