0
点赞
收藏
分享

微信扫一扫

【Flask】修改配置文件

在谈Flask修改配置文件之前,先需要理解,通过一个字符串(模块名.类名)如​​settings.Foo​​,可以根据此字符串去获取去其中的大写的静态字段(类变量)

import importlib

path = "settings.Foo"
p,c = path.rsplit('.',maxsplit=1) #分割.左右的字符
m = importlib.import_module(p) #传递参数p,找到settings模块
cls = getattr(m,c) #利用gettattr方法,在模块中找到对应的类

for key in dir(cls): #dir方法会打印参数cls对应类的静态字段
if key.isupper(): #判断该静态字段是否全大写字母
print(key,getattr(cls,key)) #打印出全大写字母的字段名和对应的值
  • 配置文件
    Flask中,应用配置文件的语法为
app.config.from_object("settings.DevelopmentConfig")

即在settings.py定义DevelopmentConfig类,编写配置选项,settings.py如下

from datetime import timedelta
class Config(object):
DEBUG = False
TESTING = False
SECRET_KEY = "asdfasdfas23"
DATABASE_URI = 'sqlite://:memory:'

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
PERMANENT_SESSION_LIFETIME = timedelta(hours=1)


class ProductionConfig(Config):
DATABASE_URI = 'mysql://user@localhost/foo'


class DevelopmentConfig(Config):
DEBUG = True


class TestingConfig(Config):
TESTING = True

若要应用不同的配置文件,做不同的修改即可,上述代码做继承的好处是,不同环境相同的配置代码不用重写,比如修改成测试文件下的配置文件

#app.config.from_object("settings.DevelopmentConfig")
app.config.from_object("settings.TestingConfig")


举报

相关推荐

0 条评论