Flask的配置对象(config)是一个字典(dict)的子类(subclass),所以你可以把配置用键值对的方式存储进去。
1、一些重要的配置,可以设置在系统环境变量里,又或者放到某个服务器里,用的时候下载配置文件并读取配置
# 在linux系统里设置环境变量 export MAIL_USERNAME=me@greyli.com # 用的时候取环境变量 import os from flask import Flask app = Flask(__name__) app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME', 'me@greyli.com') # os.geteve(key,default=None) Get an environment variable, return None if it
# doesn't exist.The optional second argument can specify an alternate default.
2、直接写入主脚本
from flask import Flask app = Flask(__name__) app.config['SECRET_KEY'] = 'some secret words' app.config['DEBUG'] = True app.config['ITEMS_PER_PAGE'] = 10
或者写成下面的方式:
from flask import Flask app = Flask(__name__) app.config.update( DEBUG=True, SECRET_KEY='some secret words', ITEMS_PER_PAGE=10 )
3、单独的配置文件configure.py
SECRET_KEY = 'some secret words' DEBUG = True ITEMS_PER_PAGE = 10
在创建程序实例后导入配置
import config ... app = Flask(__name__) app.config.from_object(configure) ...
4、为开发环境、测试环境、生成环境、预发布环境创建不同的测试类
1 import os 2 basedir = os.path.abspath(os.path.dirname(__file__)) 3 4 5 class BaseConfig: # 基本配置类 6 SECRET_KEY = os.getenv('SECRET_KEY', 'some secret words') 7 ITEMS_PER_PAGE = 10 8 9 10 class DevelopmentConfig(BaseConfig): 11 DEBUG = True 12 SQLALCHEMY_DATABASE_URI = os.getenv('DEV_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite') 13 14 15 class TestingConfig(BaseConfig): 16 TESTING = True 17 SQLALCHEMY_DATABASE_URI = os.getenv('TEST_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite') 18 WTF_CSRF_ENABLED = False 19 20 21 config = { 22 'development': DevelopmentConfig, 23 'testing': TestingConfig, 24 25 'default': DevelopmentConfig 26 }