Flask配置文件

Flask 因为是一种轻量级的web框架,所以他的配置,没有在一个文件中,而是封装了一个类,

同样,Flask 对于封装的概念运用的很棒,如果可以读懂Flask的执行流程,我想对 面向对象的理解应该可以在进一步。

 

 

配置

Flask的初始配置封装在类里面。

可以通过实例化Flask后,点default_config字段来查看,当然,这个的前提是你使用的是pycharm。

default_config = ImmutableDict({
        'ENV':                                  None,
        'DEBUG':                                None,
        'TESTING':                              False,
        'PROPAGATE_EXCEPTIONS':                 None,
        'PRESERVE_CONTEXT_ON_EXCEPTION':        None,
        'SECRET_KEY':                           None,
        'PERMANENT_SESSION_LIFETIME':           timedelta(days=31),
        'USE_X_SENDFILE':                       False,
        'SERVER_NAME':                          None,
        'APPLICATION_ROOT':                     '/',
        'SESSION_COOKIE_NAME':                  'session',
        'SESSION_COOKIE_DOMAIN':                None,
        'SESSION_COOKIE_PATH':                  None,
        'SESSION_COOKIE_HTTPONLY':              True,
        'SESSION_COOKIE_SECURE':                False,
        'SESSION_COOKIE_SAMESITE':              None,
        'SESSION_REFRESH_EACH_REQUEST':         True,
        'MAX_CONTENT_LENGTH':                   None,
        'SEND_FILE_MAX_AGE_DEFAULT':            timedelta(hours=12),
        'TRAP_BAD_REQUEST_ERRORS':              None,
        'TRAP_HTTP_EXCEPTIONS':                 False,
        'EXPLAIN_TEMPLATE_LOADING':             False,
        'PREFERRED_URL_SCHEME':                 'http',
        'JSON_AS_ASCII':                        True,
        'JSON_SORT_KEYS':                       True,
        'JSONIFY_PRETTYPRINT_REGULAR':          False,
        'JSONIFY_MIMETYPE':                     'application/json',
        'TEMPLATES_AUTO_RELOAD':                None,
        'MAX_COOKIE_SIZE': 4093,
    })

可以看到,他是一个不可变的字典。

在Flask源码中,app.config 被封装了一个 Config类进去,所以,如果想要修改配置文件中的东西的话, 可以依照修改类中的静态字段的操作来修改。

例如将'DEBUG'改为Ture

from flask import Flask

app = Flask(__name__)
app.config["DEBUG"] = True

@app.route("/index")
def index():
    
    return "index"


if __name__ == "__main__":
    app.run()

 

自定义配置文件

 Flask中的 config中还封装了一个方法 from_object(文件名)

这个方法,可以在参数中传入一个某个模块下的类,

在源码中,利用了 import_string 的模块去导入 传入函数中的类的所有的静态字段。

示例:

"""
目录结构:
|- mystile
    |- app.py 
    |- settings.py
    |- templates
"""

- app.py
from flask import Flask

app = Flask(__name__)

app.config.from_object("settings.DevelopmentConfig")
@app.route('/index')
def index():
    print('index')
    return "index"

if __name__ == '__main__':
    app.run()


- settings.py

class DevelopmentConfig(Config):
    DEBUG = True
    """
    这里面继续写,需要改的配置文件的 变量
    """

 

posted @ 2018-10-20 16:17  浮生凉年  阅读(216)  评论(0编辑  收藏  举报