Flask-配置参数
配置管理
复杂的项目需要配置各种环境。如果设置项很少,可以直接硬编码进来,比如下面的方式:
app = Flask(__name__) app.config['DEBUG'] = True
app.config是flask.config.Config类的实例,继承自Python内置数据结构dict,所以可以使用update方法:
app.config.update( DEBUG = True, ... )
app.config内置的全部配置变量可以参看Builtin Configuration Values。如果设置选项很多,想要集中管理设置项,应该将他们存放到一个文件里面。app.config支持多种更新配置的方式。假设现在有个叫做settings.py的配置文件,其中的内容如下:
A = 1
可以选择如下三种方式加载:
- 通过配置文件加载
# 通过模块名的字符串 app.config.from_object('settings') # 或者: import settings app.config.from_object(settings)
- 通过文件名字加载。但是不限于只使用.py后缀的文件名
# slient=True该文件不存在时不抛异常,返回False,默认是会抛出异常 app.config.from_pyfile('settings.py',slient=True)
flask文件中的默认配置
flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: { 'DEBUG': get_debug_flag(default=False), 是否开启Debug模式 'TESTING': False, 是否开启测试模式 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': timedelta(days=31), 'USE_X_SENDFILE': False, 'LOGGER_NAME': None, 'LOGGER_HANDLER_POLICY': 'always', 'SERVER_NAME': None, 'APPLICATION_ROOT': None, 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12), 'TRAP_BAD_REQUEST_ERRORS': False, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': True, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, }
总结
方式一:
app.config[
'DEBUG'
]
=
True
PS: 由于Config对象本质上是字典,所以还可以使用app.config.update(...)
方式二:
app.config.from_pyfile(
"python文件名称"
)
如:
settings.py
DEBUG
=
True
app.config.from_pyfile(
"settings.py"
)
app.config.from_envvar(
"环境变量名称"
)
环境变量的值为python文件名称名称,内部调用from_pyfile方法
app.config.from_json(
"json文件名称"
)
JSON文件名称,必须是json格式,因为内部会执行json.loads
app.config.from_mapping({
'DEBUG'
:
True
})
字典格式
app.config.from_object(
"python类或类的路径"
)
app.config.from_object(
'pro_flask.settings.TestingConfig'
)
settings.py
class
Config(
object
):
DEBUG
=
False
TESTING
=
False
DATABASE_URI
=
'sqlite://:memory:'
class
ProductionConfig(Config):
DATABASE_URI
=
'mysql://user@localhost/foo'
class
DevelopmentConfig(Config):
DEBUG
=
True
class
TestingConfig(Config):
TESTING
=
True
PS: 从sys.path中已经存在路径开始写
PS: settings.py文件默认路径要放在程序root_path目录,如果instance_relative_config为
True
,则就是instance_path目录
要想在视图函数中获取配置文件的值,都是通过app.config来拿。但是如果视图函数和Flask创建的对象app不在一个模块。就得通过导入来拿。可以不用导入。直接导入一个current_app,这个就是当前的app对象,用current_app.config就能查看到了当前app的所有的配置文件
1 2 3 4 5 6 7 | from flask import Flask,current_app @app .route( '/index' ,methods = [ "GET" , "POST" ]) def index(): print (current_app.config) #当前的app的所有配置 session[ "xx" ] = "fdvbn" return "index" |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具