配置介绍
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,
}
配置文件路径设置
在 Flask 类生成app对象,可以根据
instance_relative_config
和instance_path
来额外设置
instance_relative_config = True
来设置是否根据自定义的路径生效,不指定instance_path
时,该路径默认为根目录/instance/
文件夹下,指定时,必须要传入绝对路径!
instance_path
无法使templates
和static
文件夹在指定的目录下生效
import os
other_path = os.path.join(os.path.dirname(__file__),'other')
# app = Flask(__name__)
# app = Flask(__name__,instance_relative_config=True)
app = Flask(__name__,instance_relative_config=True,instance_path=other_path)
app.config.from_pyfile('config.py')
print(app.config.get('MY'))
配置文件写法
写法一:
该写法仅限于两个字段 ----
secret_key
,debug
app.secret_key='asfasdf'
app.debug=True
写法二:
通过config字典操作,字段同样是全大写
app所有的配置都在 config 这个字典中
app.config['DEBUG']=True
print(app.config)
写法三:
新建一个settings.py , 通过
app.config.from_pyfile('settings.py')
使其生效
app.config.from_pyfile('settings.py')
print(app.config['NAME'])
settings.py
NAME = 666
DEBUG = True
写法四
通过类的方法,app.config.from_object()
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
app.py
–使用方法
# 开发时使用该方式
app.config.from_object('settings.DevelopmentConfig')
# 项目在生产环境
app.config.from_object('settings.ProductionConfig')
print(app.config)
其他
环境变量与 json 文件
app.config.from_envvar("环境变量名称")
app.config.from_json("json文件名称")