首页 > 其他 > 详细

flask config 环境变量配置

时间:2020-01-13 17:17:32      阅读:221      评论:0      收藏:0      [点我收藏+]

https://zhuanlan.zhihu.com/p/24055329

从环境变量中读取配置

对于不适合写在程序里的配置,比如密码等,需要把配置写入系统环境变量,然后使用os模块的getenv()方法获取,第二个参数作为默认值

set MAIL_USERNAME=me@greyli.com  # windows
export MAIL_USERNAME=me@greyli.com  # *unix
import os
from flask import Flask

app = Flask(__name__)
app.config[‘MAIL_USERNAME‘] = os.getenv(‘MAIL_USERNAME‘, ‘me@greyli.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

使用字典的update方法可以简化代码

from flask import Flask

app = Flask(__name__)
app.config.update(
    DEBUG=True,
    SECRET_KEY=‘some secret words‘,
    ITEMS_PER_PAGE=10
)

 

单独的配置文件

程序逐渐变大时,配置也逐渐增多,写在主脚本里太占地方,不够优雅。我们可以创建一个单独的配置文件。和上面同样的配置,现在可以改写为

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


config = {
    ‘development‘: DevelopmentConfig,
    ‘testing‘: TestingConfig,
    ‘default‘: DevelopmentConfig
}

 

通过from_object()方法导入配置

from config import config  # 导入存储配置的字典

...
app = Flask(__name__)
app.config.from_object(config[‘development‘])  # 获取相应的配置类
...


# 通过此方法得到配置文件的值
current_app.config[‘SQLALCHEMY_DATABASE_URI‘]

flask config 环境变量配置

原文:https://www.cnblogs.com/mlllily/p/12188142.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!