1. 程式人生 > 其它 >Sanic十一:Sanic類檢視與合成檢視

Sanic十一:Sanic類檢視與合成檢視

一、類檢視

基於類的檢視只是實現對請求的響應行為的類。它們提供了一種在同一端點劃分不同HTTP請求型別處理的方法。可以為端點分配一個基於類的檢視,而不是定義和修飾三個不同的處理程式函式(每個端點支援的請求型別對應一個處理程式函式)。

基於類的檢視需繼承 HTTPMethodView . 然後,可以為要支援的每個HTTP請求型別實現類方法。如果接收到沒有定義方法的請求,則 405: Method not allowed 將生成響應。

註冊基於類的檢視,需使用 app.add_route 方法。第一個引數應該是用方法定義的類 as_view 呼叫,第二個應該是URL端點

1、url引數:如果需要任何URL引數,需在方法定義中宣告,但是由於此時是幾種請求方式註冊到同一介面地址的,所以沒有接收此引數的請求方法會報錯,如,get請求接收了此路徑引數,可以正常使用,但是post、put、delete沒有接收此引數,當使用這些請求方式時,則會報錯,所以當使用類檢視且要接收路徑引數時,此類檢視下的手遊請求方法都需要接收此引數

2、裝飾器

當要使用裝飾器時,需使用decorators 屬性來以 列表/元祖 的形式指定,

如,登入校驗

應用到類檢視中使用

對當前類檢視下的所有請求生效

只使用到需要用到的請求上,此時,還需要把此方法宣告為靜態方法

3、使用url_for生成介面地址時,則需傳入類名

二、合成檢視

合成檢視可以將處理程式函式移到檢視類之外。
每個支援的HTTP方法的處理程式函式在源中的其他地方定義,然後使用 CompositionView.add 方法。第一個引數是要處理的HTTP方法列表(例如。 ['GET', 'POST'] ),第二個是處理函式

這樣就可以既分開定義檢視函式,又將這些檢視函式註冊到一個路由地址

討論群:249728408