Flask開發筆記之一

2021-08-09 06:16:06 字數 2658 閱讀 3211

flask開發筆記之一

除了flask,常見的pythonweb框架還有:

l   django:全能型web框架;

l   web.py:乙個小巧的web框架;

l   bottle:和flask類似的web框架;

l   tornado:facebook的開源非同步web框架。

web 伺服器使用一種名為 web伺服器閘道器介面的協議,把接收自客戶端的所有請求都轉交給這個物件處理 。

flask 類的建構函式只有乙個必須指定的引數,即程式主模組或包的名字。flask 用這個引數決定程式的根目錄,以便找到相對於程式根目錄的資源檔案位置。在大多數程式中,python 的 __name__ 變數就是所需的值。

先看個例項如下(安裝完flask,即可執行如下python**):

fromflaskimport

('/')

defindex():

return

''if__name__ =='__main__'

debug

=true)

__name__ =='__main__'是 python 的慣用法,確保直接執行此指令碼時才啟動伺服器。後面我們繼續看路由、裝飾器。

程式例項用run方法啟動flask繼承的開發web伺服器。

伺服器啟動後,會進入輪詢,等待並處理請求。輪詢會一直進行,直到程式停止,比如按ctrl-c鍵。debug=true表示啟用除錯模式,方便除錯。

客戶端(例如web瀏覽器)把請求傳送給web伺服器,web伺服器再把請求傳送給flask程式例項。程式例項需要知道對每個url請求執行哪些**,所以儲存了乙個url到python函式的對映關係。處理url和函式之間的關係的程式稱為路由。

程式例項儲存了乙個 url 到 python 函式的對映關係,處理url 和函式之間關係的程式成為路由。 

flask 使用上下文臨時把某些物件變為全域性可訪問。

flask 使用上下文讓特定的變數在乙個執行緒中全域性可訪問,與此同時還不會干擾其他執行緒。在 flask 中有兩種上下文:程式上下文和請求上下文,這兩種上下文提供的變數。

變數名

上下文 說明

程式上下文

當前啟用程式的程式例項 g

程式上下文

處理請求時用作臨時儲存的物件,每次請求都會重設這個變數

request

請求上下文

請求物件,封裝了客戶端發出的 http 請求中的內容

session

請求上下文

使用者繪畫,使用者儲存請求之間需要「記住」的值的字典

有時在處理請求之前或者之後執行**會很有用,flask 提供了註冊通用函式的功能,註冊的函式可在請求被分發到檢視函式之前或之後呼叫。請求鉤子使用修飾器實現。flask 支援以下四種鉤子

鉤子名

上下文

before_first_request

註冊乙個函式,在處理第乙個請求之前執行

before_request

註冊乙個函式,在每次請求之前執行

after_request

註冊乙個函式,如果沒有未處理的異常丟擲,在每次請求後執行

teardown_request

註冊乙個函式,即使有未處理的異常丟擲,也在每次請求後執行

可以使用set_cookie來設定cookie ,如下**

defindex():

response = make_response('')

response.set_cookie('answer','42')returnresponse

fromflaskimportflaskfromflaskimportrequest

, methods=['get','post'])defhome():return

'', methods=['get'])defsignin_form():return

''''''

, methods=['post'])defsignin():

# 需要從request

物件讀取表單內容:

ifrequest.form['username']=='admin'

andrequest.form['password']=='password':return

''   

return

''if__name__ =='__main__':

Flask開發筆記

web開發基礎 jinjia2是flask的模板引擎 flask的訊息提示與異常處理 web 開發概述 cgi common gateway inte ce vundle安裝 執行完將會安裝到 home tarena vim bundle 在使用者目錄下,建立隱藏檔案.vimrc。按照github說...

前端開發筆記(一)

1 js判斷字串是否為空 var str if str str 2 判斷checkbox是否被選中 js判斷checkbox是否被選中 var c document.getelementbyid protocl if c.checked jquery判斷checkbox是否被選中 3 js定時器se...

《flask web開發》筆記一

寫乙個應用,為了方便維護與提高重用性,需要將程式分為不同模組不同包,flask寫大型也是如此。在我們的專案目錄下,分別放著五種型別的檔案 miguel grinberg這麼設計是非常合理的。congfig.py manager.py 運維層面上的剝離 1.線下配置到線上配置的遷移是必要的,如果讓運維...