Flask app.config 的配置

原理如下:

 
image.png

1、通过调用自定义config.py文件中config字典,可以得到一个类,
这个类里面定义的都是类变量,这些变量就是自定义的一些配置项。
如下config.py : :

import os


BASEDIR = os.path.abspath(os.path.dirname(__file__))


class Config: """base config""" SECRET_KEY = os.environ.get('SECRET_KEY') or 'secret key' SQLALCHEMY_COMMIT_ON_TEARDOWN = True SQLALCHEMY_TRACK_MODIFICATIONS = True FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN') FLASKY_MAIL_SENDED = 'jianghan@julanling.com' # 发件人地址 FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]' # 邮件主题前缀 class ProductionConfig(Config): """运行环境配置""" SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \ 'sqlite:///' + os.path.join(BASEDIR, 'data.sqlite') ...... config = { 'development': DevelopmentConfig, 'testing': ProductionConfig, 'production': ProductionConfig, 'default': DevelopmentConfig } 

2、利用Flask类,实例app,并把自定义配置传进去。
如下app.py:

# __name__是本文件名字,
# Flask类里面,会根据此名字,找到app.py所在目录,即默认为根目录。
app = Flask(__name__)
app.config.from_object(config['testing'])

3、配置原理:

自定义配置类给到app.config。
app.config 来自于 self.make_config()
self.make_config() 返回的值是 config_class()
config_class 就是Config类。
config_class(),是config加个括号,其实就是Config()

通过上面一系列的串联,可以看出:
app.config,就是Config()

之所以要在中间加一些方法,如mke_config(),是为了给Config()添加一些默认值。
例如:根目录root_path、默认配置self.default_config等。
如下:

    def make_config(self, instance_relative=False): root_path = self.root_path if instance_relative: root_path = self.instance_path return self.config_class(root_path, self.default_config) 

其实,在你在写到app.config时,就已经创建了一个带默认配置项的Config()实例。
Config类有很多方法可以修改默认配置和添加新配置。如from_object()

当写到 app.config.from_object(config),其实就是对默认配置的修改和添加。

参考:很多,在网上了其他人的一些解释,然后自己再看看源码,就大概明白了。



作者:江寒0_1
链接:https://www.jianshu.com/p/7572a2df7eed
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://www.cnblogs.com/ExMan/p/10161829.html

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页