flask config 環境變量配置


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']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM