3、配置方式2-物件中配置:from_object介紹
方法說接收的引數obj可以使str型別,可以是乙個模組,甚至是乙個類。
from flask importflask
#輸出結果,是乙個類
'flask.config.config
'>
class先來看看from_object()方法的原始碼:config(dict):
def__init__(self, root_path, defaults=none):
dict.
__init__(self, defaults or
{}) self.root_path =root_path
#讀取配置的方法
def from_envvar(self, variable_name, silent=false):
pass
def from_pyfile(self, filename, silent=false):
pass
deffrom_object(self, obj):
pass
def from_json(self, filename, silent=false):
pass
pass
deffrom_object(self, obj):從原始碼可以看出,from_object()方法說接收的引數obj可以使str型別,可以是乙個模組,甚至是乙個類。if isinstance(obj, string_types): #判斷obj是否是str型別
obj = import_string(obj) #如果是str型別,就根據這個字串匯入物件
for key in dir(obj): #遍歷obj的所有值
ifkey.isupper():
self[key] = getattr(obj, key) #self指的就是config例項本身,通過getattr取出對應的值進行
我們先嘗試一下是乙個模組的情況,建立乙個settings.py模組,內容如下:
debug =false這裡只寫了兩個配置,你可以寫更多,無所謂。怎麼使用呢?testing = false
from flask importflask輸出:debug: trueimportsettings
testing: true
a: 123
當obj是乙個字串時:
from flask importflask輸出:debug: true
testing: true
a: 123
如果obj是乙個類時,我們修改一下settings.py,如下:
classconfig(object):在settings.py模組中,我們定義了多個類,首先是config類,這個類定義的是預設配置,其他類都繼承config類,每乙個之類代表一種配置,如果需要子類中可以覆寫config,如果不覆寫則使用config中的預設配置。怎麼使用呢?debug =false
testing =false
database_uri = 'sqlite://memory:'
classproductionconfig(config):
database_uri = 'mysql://user@localhost/foo'
classdevelopmentconfig(config):
debug =true
classtestingconfig(config):
testing = true
from flask importflask輸出:debug: falseimportsettings
testing: false
database_uri: mysql://user@localhost/foo
其他幾種載入方式都在原部落格中講述,且原博主文章質量很高,講解通熟易懂,排版清晰明朗,已關注原博主,建議看到的小夥伴關注。
Flask的專案配置1
在專案開發中,新建乙個manage.py的管理檔案,在manage.py做flask的相關的配置 使用工具pycharm,為了方便管理,將下列配置檔案進行拆包處理 from flask import flask from flask sqlalchemy import sqlalchemy 匯入和f...
Flask專案結構
專案排版 首先建立專案目錄 mkdir flask tutorial cd flask tutorial接下來按照前一篇講過的安裝flask步驟進行安裝,並新建乙個虛擬環境。flask應用可以簡單到使用乙個單檔案,例如hello.py from flask import flask defhello...
flask專案安裝
flask誕生於2010年,是armin ronacher 人名 用 python 語言基於 werkzeug 工具箱編寫的輕量級web開發框架。flask 本身相當於乙個核心,其他幾乎所有的功能都要用到擴充套件 郵件擴充套件flask mail,使用者認證flask login,資料庫flask ...