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():fromflaskimportflaskfromflaskimportrequestresponse = make_response('')
response.set_cookie('answer','42')returnresponse
, 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.線下配置到線上配置的遷移是必要的,如果讓運維...