在后續(xù)開發(fā)中我們經(jīng)常會跟核心對象打交道,所以我們要對核心對象有一些必要的了解。
from flask import Flask
app = Flask(__name__)
app是我們通過Flask類構(gòu)造的一個實(shí)例杠纵。
在這個示例中,我們通過引入flask包下面的Flask類的構(gòu)造函數(shù)钩骇,來創(chuàng)建一個命名為app的實(shí)例比藻。這個app實(shí)際上就是我們接觸flask框架中第一個核心對象。我們通常成為Application Context(程序上下文對象)倘屹。
從功能上程序上下文實(shí)現(xiàn)了WSGI程序银亲,可注冊視圖函數(shù)、地址規(guī)則纽匙、模板配置等务蝠。WSGI全稱為WebServerGatewayInterface(Web服務(wù)器網(wǎng)關(guān)接口),是一種接口的規(guī)范烛缔,通過flask編寫的web應(yīng)用程序最終部署到服務(wù)器上要遵循這個規(guī)范馏段。
簡單講,app是一個WSGI程序践瓷,所有針對站點(diǎn)的配置都是通過app這個對象來實(shí)現(xiàn)的院喜,可以通過傳遞功能至請求上下文。
由于app的生命周期早于客戶端請求晕翠,所以可以把不同請求中的共享對象够坐,通過app對象創(chuàng)建,例如數(shù)據(jù)庫的連接崖面,當(dāng)app創(chuàng)建的時候就創(chuàng)建連接數(shù)據(jù)庫對象,后面的請求都可以共享這個連接梯影。
API(Application Programming Interface)
import_name
構(gòu)造函數(shù)Flask(__name__)
中第一個參數(shù)為import_name巫员,告訴程序的入口在什么地方,知道入口后就可以通過入口找到其他相對路徑甲棍,例如它的靜態(tài)資源目錄以及模板資源目錄简识。除了使用默認(rèn)參數(shù)name來指定當(dāng)前文件為程序的入口,也可以使用包名來指定感猛,具體操作為Flask('包名')七扰。
在單模塊程序中使用Flask(__name__)
就可以滿足需求(不需要加引號),而在多模塊程序中需要使用單引號+包名來指定程序入口陪白。
static_url_path
這個參數(shù)用來指定靜態(tài)資源目錄的位置颈走,如果不指定則默認(rèn)為static_folder也就是在根目錄創(chuàng)建的static文件夾,沒有特殊需求一般不需要修改咱士。
template_folder
指定模板文件夾立由,默認(rèn)為在根目錄下創(chuàng)建的templates目錄轧钓,同靜態(tài)資源目錄一樣,沒有特殊需求則不需要修改锐膜,以免造成不必要的麻煩毕箍。
通常來講在構(gòu)造Flask函數(shù)時,傳遞第一個參數(shù)就足夠道盏。
API中的屬性
.name 名稱(當(dāng)前腳本文件的名稱)
.config 配置(獲取或指定)
.debug 是否啟用調(diào)試
.secret_key 安全碼
app對象中有很多屬性而柑,可以用來設(shè)置,可以用來獲取當(dāng)前程序中的一些配置荷逞。
通過配置的方式去修改屬性
app.config["DEBUG"] = True
將config視為一個字典表媒咳,比app.debug=True
更加靈活。
其他屬性也可以通過此種方法進(jìn)行設(shè)置
app.config["SECRET_KEY"] = "4324301250$%@#!@"
可以通過直接屬性賦值颅围,但如果為了以后統(tǒng)一設(shè)置伟葫,最好使用字典表式的配置文件設(shè)置,這樣看起來更直觀院促,當(dāng)然也可以創(chuàng)建單獨(dú)的文件去配置筏养。
裝飾器
最常用的為.route(),用來定制一個地址規(guī)則常拓,匹配地址和視圖函數(shù)渐溶。
@app.route('/')
def home():
return "Hello"
route用來規(guī)劃地址、匹配視圖函數(shù)弄抬,但不是唯一的方式茎辐,可以通過.add_url_rule()方法實(shí)現(xiàn)。
run方法
if __name__ == '__main__':
app.run()
run方法也可以傳入一些參數(shù)
app.run(host='127.0.0.1')
指定主機(jī)掂恕,app.run(port=5001)
可以指定端口拖陆,默認(rèn)為5000,app.run(debug=True)
是否開啟調(diào)試模式懊亡。還可以在實(shí)際工作中定制其他的通過鍵值對傳遞更多的定制參數(shù)依啰。