iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Software Development

從開始到放棄的Flask系列 第 6

[Day 6] Flask 配置管理 config設定

  • 分享至 

  • xImage
  •  

前幾天我們已經初步的了解甚麼是Flask了,也能夠成功的做出我們的一個網頁了,那我們今天來看看Flask的配置管理吧

配置管理是什麼

Flask配置管理是指在Flask應用中對不同配置項進行集中管理的機制。我們可以透過在主程式裡面直接寫入配置,這在小型的開發中不一定是壞事,但如果我們開發的越來越大型了呢?這可能就不太好了,所以我們通常都會另外再寫一個config來儲存這些配置的訊息,這樣可以把配置跟程式碼邏輯獨立出來,可以避免將配置硬編碼到程式碼中,降低耦合度,也可以方便我們統一管理,例如在開發、生產或是測試的時候會有不同的配置,把這些資訊儲存在一起也能避免我們混亂。但如果是ㄧ些敏感性的參數還是建議採用環境變數來設置。
講了這麼多,我們直接來看一下怎麼設定吧。

配置方式

config其實是一個字典的子類別,所以我們可以像字典一樣操作。而在Flask對於config的配置方式有幾個方法:

  1. 直接設置配置
from flask import Flask


app = Flask(__name__)
app.config["DEBUG"] = True


@ app.route("/")
def index():
    return "Hello World"


if __name__ == "__main__":
    app.run()

這個方式是最基本配置方式,我們可以執行起來可以看到這樣就成功了,上面的app.config["DEBUG"]=True這個的意思其實就跟app.run(debug=True)一樣,但我們不可能有其他設定都在app.run()裡面設定吧!

https://ithelp.ithome.com.tw/upload/images/20230919/201592251FxEXeZ8iF.png

  1. 一次更新多個配置
config = {
  'DEBUG': True,
  'TESTING': True,
}
app.config.update(config)

app.config.update()也可以用傳入關鍵字參數的方式更新配置

app.config.update(
    TESTING = True;
    DEBUG: True
)

透過app.config.update()可以用來同時更新多個配置像,而不是一個一個的去設定,

  1. 從文件載入配置
    我們可以定義config.py文件:
# config.py
DEBUG = True
TESTING = True 
SECRET_KEY = 'secret key'

接著我們在app.py中可以將它引入

app.config.from_pyfile('config.py')

在撰寫配置時我們要知道幾點:

  1. 別直接把配置寫死在程式碼里,放在config文件中
    這樣容易將配置混入我們的程式中,讓整體結構混亂,且配置散落在多個文件中,不利於我們管理,如果配置有修改時需要修改程式及重新部署。所以我們如果開發的程式越來越大,我們應該要將配置統一提取到配置文件中,使得他與我們的主要邏輯隔離
  2. 敏感訊息用環境變數設置
    敏感訊息例如密鑰或是密碼這些如果撰寫在配置中很容易就被看光了,所以如果有需求的話,我們應該透過環境變數設定在不同的環境使用不同的敏感訊息,可以提高安全性。

上一篇
[Day 5] Flask模板 Jinja2基礎用法
下一篇
[Day 7] 在Flask中上傳檔案
系列文
從開始到放棄的Flask30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言