更新時(shí)間:2023-04-20 來(lái)源:黑馬程序員 瀏覽量:
Flask是一個(gè)用Python編寫的微框架,它可以幫助開發(fā)者在短時(shí)間內(nèi)完成一個(gè)功能豐富的Web應(yīng)用程序。在Flask中,若需要在程序中使用配置信息,以便對(duì)程序的一些行為進(jìn)行定制,則可以采用多種方式將配置信息保存到Flask類對(duì)象的config屬性中。config屬性的值是一個(gè)flask.Config類的對(duì)象,flask.Config類是一個(gè)Python字典子類,它的工作方式類似于字典,既可以通過(guò)訪問(wèn)字典元素的方式使用配置信息,也可以通過(guò)flask.Config類提供的導(dǎo)入配置項(xiàng)的方法使用配置信息。
本節(jié)我們介紹Flask配置信息的使用,通過(guò)訪問(wèn)字典元素、導(dǎo)入文件和導(dǎo)入對(duì)象這3種方式使用配置信息。
可以通過(guò)訪問(wèn)字典元素的方式獲取Flask程序的配置項(xiàng),并重新為該配置項(xiàng)賦值。例如,通過(guò)為Flask類的對(duì)象app設(shè)置配置項(xiàng)TESTING,以啟用測(cè)試模式,代碼如下所示。
app.config['TESTING'] = True
若希望一次修改多個(gè)配置項(xiàng),則可以調(diào)用flask.Config從父類繼承的update()方法實(shí)現(xiàn)。例如,為Flask類的對(duì)象app設(shè)置配置項(xiàng)TESTING和SECRET_KEY,從而使程序啟用測(cè)試模式以及設(shè)置密鑰,具體代碼如下所示。
app.config.update( TESTING=True, SECRET_KEY=b'_5#y2L"F4Q8z\n\xec]/' )
可以將所有的配置項(xiàng)存入單獨(dú)的文件中,之后將該文件導(dǎo)入到Flask程序。flask.Config類中提供了一些從文件中導(dǎo)入配置項(xiàng)的方法,關(guān)于這些方法的介紹如下。
●from_file():從指定的文件中導(dǎo)入配置項(xiàng),并更新配置項(xiàng)的值。
●from_pyfile():從.py文件中導(dǎo)入配置項(xiàng),并更新配置項(xiàng)的值。
#通過(guò)from_file()方法從config.json文件中導(dǎo)入配置項(xiàng) import json app.config.from_file("config.json", load=json.load) #通過(guò)from_pyfile()方法從config.py文件中導(dǎo)入配置項(xiàng) app.config.from_pyfile("config.py")
可以通過(guò)定義Python類屬性的方式設(shè)置配置項(xiàng),之后將包含配置項(xiàng)的Python類的對(duì)象導(dǎo)入到Flask程序中。flask.Config類中提供了一些從Python類中導(dǎo)入配置項(xiàng)的方法
from_object(),from_object()方法用于從給定對(duì)象中導(dǎo)入配置項(xiàng),并更新配置項(xiàng)的值。需要說(shuō)明的是,from_object()方法只會(huì)加載Python類中以大寫字母命名的屬性。如果Python類中有一個(gè)@property屬性,則該類在被傳遞給from_object()方法之前需要進(jìn)行實(shí)例化。
定義一個(gè)包含兩個(gè)配置項(xiàng)TESTING和SECRET_KEY的類Settings,之后調(diào)用from_object(O方法從Settings類中加載配置項(xiàng),并在程序中使用這些配置信息,具體代碼如下所示。