flask 第八篇 实例化flask时的参数配置
Flask 是一個(gè)非常靈活且短小精干的web框架 , 那么靈活性從什么地方體現(xiàn)呢?
有一個(gè)神奇的東西叫 Flask配置 , 這個(gè)東西怎么用呢? 它能給我們帶來(lái)怎么樣的方便呢?
首先展示一下:
from flask import Flaskapp = Flask(__name__) # type:Flask app.config["DEBUG"] = True這句 app.config["DEBUG"] = True 可以實(shí)現(xiàn)的功能可刺激了
代碼只要發(fā)生改動(dòng),自動(dòng)重啟Flask程序(app.run)
在控制臺(tái)打印的信息非常全面
以上兩個(gè)功能就是傳說(shuō)中的 DEBUG 模式(調(diào)試模式)
Flask的配置就是在 app.config 中添加一個(gè)鍵值對(duì),但是你存進(jìn)去的鍵必須是config中應(yīng)該存在的,如果不再存在的話(huà),它會(huì)默認(rèn)無(wú)用,就這么放著
config中有多少有用的key 呢?
{'DEBUG': False, # 是否開(kāi)啟Debug模式'TESTING': False, # 是否開(kāi)啟測(cè)試模式'PROPAGATE_EXCEPTIONS': None, # 異常傳播(是否在控制臺(tái)打印LOG) 當(dāng)Debug或者testing開(kāi)啟后,自動(dòng)為T(mén)rue'PRESERVE_CONTEXT_ON_EXCEPTION': None, # 一兩句話(huà)說(shuō)不清楚,一般不用它'SECRET_KEY': None, # 之前遇到過(guò),在啟用Session的時(shí)候,一定要有它'PERMANENT_SESSION_LIFETIME': 31, # days , Session的生命周期(天)默認(rèn)31天'USE_X_SENDFILE': False, # 是否棄用 x_sendfile'LOGGER_NAME': None, # 日志記錄器的名稱(chēng)'LOGGER_HANDLER_POLICY': 'always','SERVER_NAME': None, # 服務(wù)訪(fǎng)問(wèn)域名'APPLICATION_ROOT': None, # 項(xiàng)目的完整路徑'SESSION_COOKIE_NAME': 'session', # 在cookies中存放session加密字符串的名字'SESSION_COOKIE_DOMAIN': None, # 在哪個(gè)域名下會(huì)產(chǎn)生session記錄在cookies中'SESSION_COOKIE_PATH': None, # cookies的路徑'SESSION_COOKIE_HTTPONLY': True, # 控制 cookie 是否應(yīng)被設(shè)置 httponly 的標(biāo)志,'SESSION_COOKIE_SECURE': False, # 控制 cookie 是否應(yīng)被設(shè)置安全標(biāo)志'SESSION_REFRESH_EACH_REQUEST': True, # 這個(gè)標(biāo)志控制永久會(huì)話(huà)如何刷新'MAX_CONTENT_LENGTH': None, # 如果設(shè)置為字節(jié)數(shù), Flask 會(huì)拒絕內(nèi)容長(zhǎng)度大于此值的請(qǐng)求進(jìn)入,并返回一個(gè) 413 狀態(tài)碼'SEND_FILE_MAX_AGE_DEFAULT': 12, # hours 默認(rèn)緩存控制的最大期限'TRAP_BAD_REQUEST_ERRORS': False,# 如果這個(gè)值被設(shè)置為 True ,Flask不會(huì)執(zhí)行 HTTP 異常的錯(cuò)誤處理,而是像對(duì)待其它異常一樣,# 通過(guò)異常棧讓它冒泡地拋出。這對(duì)于需要找出 HTTP 異常源頭的可怕調(diào)試情形是有用的。'TRAP_HTTP_EXCEPTIONS': False,# Werkzeug 處理請(qǐng)求中的特定數(shù)據(jù)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)會(huì)拋出同樣也是“錯(cuò)誤的請(qǐng)求”異常的特殊的 key errors 。# 同樣地,為了保持一致,許多操作可以顯式地拋出 BadRequest 異常。# 因?yàn)樵谡{(diào)試中,你希望準(zhǔn)確地找出異常的原因,這個(gè)設(shè)置用于在這些情形下調(diào)試。# 如果這個(gè)值被設(shè)置為 True ,你只會(huì)得到常規(guī)的回溯。'EXPLAIN_TEMPLATE_LOADING': False,'PREFERRED_URL_SCHEME': 'http', # 生成URL的時(shí)候如果沒(méi)有可用的 URL 模式話(huà)將使用這個(gè)值'JSON_AS_ASCII': True,# 默認(rèn)情況下 Flask 使用 ascii 編碼來(lái)序列化對(duì)象。如果這個(gè)值被設(shè)置為 False ,# Flask不會(huì)將其編碼為 ASCII,并且按原樣輸出,返回它的 unicode 字符串。# 比如 jsonfiy 會(huì)自動(dòng)地采用 utf-8 來(lái)編碼它然后才進(jìn)行傳輸。'JSON_SORT_KEYS': True,#默認(rèn)情況下 Flask 按照 JSON 對(duì)象的鍵的順序來(lái)序來(lái)序列化它。# 這樣做是為了確保鍵的順序不會(huì)受到字典的哈希種子的影響,從而返回的值每次都是一致的,不會(huì)造成無(wú)用的額外 HTTP 緩存。# 你可以通過(guò)修改這個(gè)配置的值來(lái)覆蓋默認(rèn)的操作。但這是不被推薦的做法因?yàn)檫@個(gè)默認(rèn)的行為可能會(huì)給你在性能的代價(jià)上帶來(lái)改善。'JSONIFY_PRETTYPRINT_REGULAR': True,'JSONIFY_MIMETYPE': 'application/json','TEMPLATES_AUTO_RELOAD': None, }以上這些Key,都可以被改寫(xiě),當(dāng)然他們也都是有默認(rèn)值存在的,如果沒(méi)有特殊情況,不要改寫(xiě)它的默認(rèn)值
修改配置的方式大約是兩種
1.直接對(duì)app.config進(jìn)行修改
app.config["DEBUG"] = True2.使用類(lèi)的方式導(dǎo)入
首先要有一個(gè)settings.py的文件
class FlaskSetting:DEBUG = TrueSECRET_KEY = "DragonFire"然后我們?cè)贔lask的啟動(dòng)文件中就可以這么寫(xiě)
from flask import Flaskapp = Flask(__name__) # type:Flask app.config.from_object("settings.FlaskSetting")這叫做類(lèi)導(dǎo)入配置
?
這是針對(duì)一個(gè)已經(jīng)實(shí)例化的app進(jìn)行的配置
那么在Flask實(shí)例化的時(shí)候,傳遞的參數(shù)是什么鬼呢?
其實(shí)可以理解為對(duì)Flask實(shí)例進(jìn)行的初始配置,這里面的參數(shù)是非常好理解,注意關(guān)鍵字是非常非常非常好理解
static_folder = 'static', # 靜態(tài)文件目錄的路徑 默認(rèn)當(dāng)前項(xiàng)目中的static目錄 static_host = None, # 遠(yuǎn)程靜態(tài)文件所用的Host地址,默認(rèn)為空 static_url_path = None, # 靜態(tài)文件目錄的url路徑 默認(rèn)不寫(xiě)是與static_folder同名,遠(yuǎn)程靜態(tài)文件時(shí)復(fù)用 # host_matching是否開(kāi)啟host主機(jī)位匹配,是要與static_host一起使用,如果配置了static_host, 則必須賦值為T(mén)rue # 這里要說(shuō)明一下,@app.route("/",host="localhost:5000") 就必須要這樣寫(xiě) # host="localhost:5000" 如果主機(jī)頭不是 localhost:5000 則無(wú)法通過(guò)當(dāng)前的路由 host_matching = False, # 如果不是特別需要的話(huà),慎用,否則所有的route 都需要host=""的參數(shù) subdomain_matching = False, # 理論上來(lái)說(shuō)是用來(lái)限制SERVER_NAME子域名的,但是目前還沒(méi)有感覺(jué)出來(lái)區(qū)別在哪里 template_folder = 'templates' # template模板目錄, 默認(rèn)當(dāng)前項(xiàng)目中的 templates 目錄 instance_path = None, # 指向另一個(gè)Flask實(shí)例的路徑 instance_relative_config = False # 是否加載另一個(gè)實(shí)例的配置 root_path = None # 主模塊所在的目錄的絕對(duì)路徑,默認(rèn)項(xiàng)目目錄這里面,我們常用的參數(shù)有
static_folder = 'static', # 靜態(tài)文件目錄的路徑 默認(rèn)當(dāng)前項(xiàng)目中的static目錄 static_url_path = None, # 靜態(tài)文件目錄的url路徑 默認(rèn)不寫(xiě)是與static_folder同名,遠(yuǎn)程靜態(tài)文件時(shí)復(fù)用 template_folder = 'templates' # template模板目錄, 默認(rèn)當(dāng)前項(xiàng)目中的 templates 目錄記住這些就好了,一般的項(xiàng)目中,只修改這些參數(shù)
?
第八篇,完結(jié)
轉(zhuǎn)載于:https://www.cnblogs.com/lingcai/p/10434157.html
總結(jié)
以上是生活随笔為你收集整理的flask 第八篇 实例化flask时的参数配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2019.03.24 视图和静态读取
- 下一篇: springcloud(五) Hyst