2. Flask配置文件

一、常用加载方式

1. 方式一:字段赋值方式导入

​ 缺点:对于极少数字段配置可以使用,多字段配置不可取

from flask import Flask
 
app = Flask(__name__)
 
app.config["debug"] = True
app.secret_key = 'afadfadfaf'
 
@app.route("/")
def index():
    return "hello"
 
 
if __name__ == '__main__':
    app.run()

2. 方式二:py文件导入

# settings.py
 
DEBUG = True
...  
from flask import Flask
 
app = Flask(__name__)

# 指定setting文件
app.config.from_pyfile("settings.py") 

# 环境变量的值为python文件名称名称,内部调用from_pyfile方法
app.config.from_envvar("环境变量名称")

# JSON文件名称,必须是json格式,因为内部会执行json.loads        
app.config.from_json("json文件名称")

#字典格式        
app.config.from_mapping({'DEBUG':True})
        
 
@app.route("/")
def index():
    return "hello"
 
 
if __name__ == '__main__':
    app.run()

3. 方式三:Python类路径方式导入(推荐)

​ 这种方式,可以控制测试环境、线上环境的切换

(1)app.py
from flask import Flask
 
app = Flask(__name__)

# 系统环境需能找到的模块路径,默认在app同级目录下 
app.config.from_object("test.settings.TestingConfig")

@app.route("/")
def index():
    return "hello"
 
 
if __name__ == '__main__':
    app.run()
(2)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:settings.py文件默认路径要放在程序root_path目录,如果instance_relative_config为True,则就是instance_path目录 

4. 默认配置参数

{
    '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,
}

参考:https://www.diandian100.cn/7c0db3b1.html

猜你喜欢

转载自www.cnblogs.com/hq82/p/12635954.html