? ? 在Flask從基礎到實戰(zhàn)(二)說到了從瀏覽器傳遞參數(shù)給視圖函數(shù)的方式箩溃,這次繼續(xù)往下說拉庶。
? ? 正則路由匹配
? ? 如果對瀏覽器傳入的參數(shù)癌佩,有條件限制的話木缝,這時候就需要用到轉換器
? ? 需求:要求傳遞過來的參數(shù)必須是數(shù)字類型的該怎么做呢?代碼如下:
運行請求的結果围辙,當輸入的是數(shù)字的時候
當輸入的是字符串的時候
這個時候我碟,由于正則路由匹配的問題,就找不到我們自己定義的視圖函數(shù)
flask中定義的正則路由有一下幾種
如果現(xiàn)在的需求是對傳入的參數(shù)不僅僅是數(shù)字類型的姚建,還需要位數(shù)為三位數(shù)的矫俺,這個時候,系統(tǒng)的這些轉換器則就不能滿足條件了掸冤,這個時候就需要我們自己定義轉換器厘托,如下:
執(zhí)行結果如下
如果輸入的數(shù)字為四位數(shù)字的話,則就訪問不到我們定義的視圖函數(shù)了
異常的拋出以及捕獲
使用abort(狀態(tài)碼)(說明該處狀態(tài)碼為HTTP標準狀態(tài)碼)函數(shù)來拋出一個異常稿湿,使用errorhandler(狀態(tài)碼)裝飾器來進行異常的捕獲例子代碼如下:
運行結果如下:
請求鉤子
執(zhí)行的結果為:
獲取請求參數(shù)
狀態(tài)保持
因為 http 是一種無狀態(tài)協(xié)議催烘,瀏覽器請求服務器是無狀態(tài)的。
無狀態(tài):指一次用戶請求時缎罢,瀏覽器伊群、服務器無法知道之前這個用戶做過什么考杉,每次請求都是一次新的請求。
無狀態(tài)原因:瀏覽器與服務器是使用 socket 套接字進行通信的舰始,服務器將請求結果返回給瀏覽器之后崇棠,會關閉當前的 socket 連接,而且服務器也會在處理頁面完畢之后銷毀頁面對象丸卷。
有時需要保持下來用戶瀏覽的狀態(tài)枕稀,比如用戶是否登錄過,瀏覽過哪些商品等
實現(xiàn)狀態(tài)保持主要有兩種方式:
????在客戶端存儲信息使用Cookie
????在服務器端存儲信息使用Session
cookie
設置cookie首先需要創(chuàng)建一個response對象谜嫉,通過make_response()方法即可萎坷,導包
from flask import make_response
運行結果如下
session
對于敏感、重要的信息沐兰,建議要存儲在服務器端哆档,不能存儲在瀏覽器中,如用戶名住闯、余額瓜浸、等級、驗證碼等信息
在服務器端進行狀態(tài)保持的方案就是Session
session依賴cookie存在
首先導包
from flask import session
運行后發(fā)現(xiàn)出現(xiàn)如下錯誤比原,提示需要配置一個secret_key
做如下配置即可:
運行結果