Flask 项目中,我们会加载很多配置 :
譬如:
设置秘钥:
app.config['SECRET_KEY'] = 'some strange words'
设置数据库:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////'
同时也会有一些自定义的配置项:
# 视图分页
app.config['POST_PER_PAGE'] = 10
post_per_page = app.config['POST_PER_PAGE']
然而配置的方法有多种:
1 .例如上面的方法可直接在创建app文件中添加配置
2、对于一些密码等写在环境变量的配置如何加载到项目里面呢?
import os
from flask import Flask
app = Flask(__name__)
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME', '*****.com')
如果我们的项目比较小我们可已经配置信息直接写在代码里面:
from flask import Flask
app = Flask(__name__)
# 直接赋值
app.config['SECRET_KEY'] = 'some secret words'
app.config['DEBUG'] = True
app.config['ITEMS_PER_PAGE'] = 10
# 或者更新字典的方式
app.config.update(
DEBUG=True,
SECRET_KEY='some secret words',
ITEMS_PER_PAGE=10
)
当我们的项目较大时我们要将大量的配置信息写在配置文件里面
创建 config.py
SECRET_KEY = 'some secret words'
DEBUG = True
ITEMS_PER_PAGE = 10
项目导入配置的方法:
import config
from flask import Flask
app = Flask(__name__)
app.config.from_object(config)
或者:
from flask import Flask
app = Flask(__name__)
app.config.from_pyfile('config.py')
在项目开发中,我们有开发环境,测试环境,生产环境,所以我们可以创建不同环境的配置类基于一个基础的配置类降低我们代码的冗余度,使得我们的代码更简洁:
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class BaseConfig: # 基本配置类
SECRET_KEY = os.getenv('SECRET_KEY', 'some secret words')
ITEMS_PER_PAGE = 10
class DevelopmentConfig(BaseConfig): # 开发环境
DEBUG = True
SQLALCHEMY_DATABASE_URI = os.getenv('DEV_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
class TestingConfig(BaseConfig): # 测试环境
TESTING = True
SQLALCHEMY_DATABASE_URI = os.getenv('TEST_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
WTF_CSRF_ENABLED = False
class ProductionConfig(BaseConfig): # 生产环境
TESTING = True
SQLALCHEMY_DATABASE_URI = os.getenv('TEST_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
WTF_CSRF_ENABLED = False
config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'product': ProductionConfig,
'default': DevelopmentConfig
}
根据不同的环境导入不同的配置
import os
from config import config # 导入存储配置的字典
from flask import Flask
app = Flask(__name__)
env = os.getenv('FLASK_ENV', 'development') # 从环境配置文件获取当前环境
app.config.from_object(config.get(env, 'default')) # 获取相应的配置类
更多知识学习查看 flask配置官方文档
文章转载 李辉大神 致敬膜拜!!!