2.3 啟動伺服器
2.4 乙個完整的程式
flask有兩個主要依賴:
路由、除錯和web伺服器閘道器介面(web server gateway inte***ce,wsgi)子系統由werkzeug提供
模版系統由jinja2提供
2.1 初始化
所有flask程式都必須建立乙個程式例項。web伺服器使用一種名為web伺服器閘道器介面(wsgi)協議,把接受自客戶端的所有請求都轉交給這個物件處理。程式例項是flask類的物件,用以下**建立:
from flask import flask
flask類的建構函式只有乙個必須指定的引數,即程式主模組或包的名字。在大多數程式中,python的__name__
變數就是所需的值。
2.2 路由和檢視函式
路由客戶端(如web瀏覽器)把請求傳送給web伺服器,web伺服器再把請求傳送給flask程式例項。程式例項需要知道對每個url請求執行那些**,所以儲存乙個url到python函式的對映關係。處理url和函式之間的程式叫做路由。
'/')
defindex()
:return
''上面把index()
函式註冊為程式根位址的處理程式。如果部署程式伺服器網域名稱為www.example.com
,在瀏覽器中訪問後,會觸發伺服器執行
index()
函式。此函式的返回值叫做響應,是客戶端接受到的內容。如果客戶端是web瀏覽器,響應就是顯示給使用者檢視的文件。
像index()
這樣的函式稱為檢視函式(view function)。檢視函式返回的響應可以是包含html的簡單字串,也可以是複雜的表單。
2.3 啟動伺服器
程式例項用run
方法啟動flask整合的開發web伺服器:
if __name__==
'__main__'
:# 這裡啟用的是除錯模式,debug引數為true
true
)
2.4 乙個完整的程式
示例2.1乙個完整的flask程式
from flask import flask
'/')
defindex()
:return
''if __name__==
'__main__'
:true
)
上面這段**的含義:
首先,我們匯入了 flask 類。這個類的例項將會是我們的 wsgi 應用程式。
接下來,我們建立乙個該類的例項,第乙個引數是應用模組或者包的名稱。 如果你使用單一的模組(如本例),你應該使用__name__
,因為模組的名稱將會因其作為單獨應用啟動還是作為模組匯入而有不同( 也即是'__main__'
或實際的匯入名)。這是必須的,這樣 flask 才知道到哪去找模板、靜態檔案等等。
然後,我們使用 route() 裝飾器告訴 flask 什麼樣的url 能觸發我們的函式。
這個函式的名字也在生成 url 時被特定的函式採用,這個函式返回我們想要顯示在使用者瀏覽器中的資訊。
最後我們用 run() 函式來讓應用執行在本地伺服器上。 其中if __name__ == '__main__':
確保伺服器只會在該指令碼被 python 直譯器直接執行的時候才會執行,而不是作為模組匯入的時候。
示例2-2包含動態路由的flask程式
from flask import flask
'/')
defindex()
:return
'''/user/'
)def
user
(name);
return
''% name
if __name__ ==
'__main__'
:true
)
注意:再測試動態路由前,要確保伺服器正在執行,然後訪問
程式會顯示乙個使用name動態引數生成的歡迎資訊。
《flask web開發》筆記一
寫乙個應用,為了方便維護與提高重用性,需要將程式分為不同模組不同包,flask寫大型也是如此。在我們的專案目錄下,分別放著五種型別的檔案 miguel grinberg這麼設計是非常合理的。congfig.py manager.py 運維層面上的剝離 1.線下配置到線上配置的遷移是必要的,如果讓運維...
Flask web開發筆記(一)
1.建立python的虛擬環境cd home ubuntu 定位到需要放置虛擬環境的目錄virtualenv venv venv為虛擬環境目錄名source venv bin activate 啟用虛擬環境當虛擬環境中的工作完成後,如果想回到全域性python 直譯器中,可以在命令列提示符下輸入de...
敏捷開發讀書筆記
1 開始時需求要明確 2 盡早發布可執行的demo,持續進行整合 3 功能粒度要足夠低 4 架構可以隨時進行調整 5 測試驅動開發 6 持續整理 及架構重構 7 持續的速度,任務分解需要細緻 粒度要小,各個模組的任務完成要及時 有效 軟體之美在於它的功能,在於它的內部結構,還在於團隊建立它的過程。對...