要在cbv檢視中使用我們上面的check_login裝飾器,有以下三種方式:
都要先導入這個方法: from django.utils.decorators import method_decorator
1. 加在cbv檢視的get或post方法上
2. 加在dispatch方法上
3. 直接加在檢視類上,但method_decorator必須傳 name 關鍵字引數(如果get方法和post方法都需要登入校驗的話就寫兩個裝飾器。)
這是我之前寫的登入裝飾器。
# 登入許可權控制(session版)
def check_login(func):
@wraps(func)
def inner(request, *args, **kwargs):
if request.session.get("user"):
return func(request, *args, **kwargs)
else:
next_url = request.path_info
print(next_url)
return inner
這是函式版的裝飾器,直接在類中使用是不行的。
1,直接在get方法或者post方法中加
class userinfo(views.view):
@method_decorator(check_login, name="get")
def get(self, request):
return httpresponse("這是乙個userinfo頁面!!!")
property裝飾器的使用方法詳解
既要保護類的封裝特性,又要讓開發者可以使用 物件.屬性 的方式操作類屬性,除了使用 property 函式,python 還提供了 property 裝飾器。通過 property 裝飾器,可以直接通過方法名來訪問方法,不需要在方法名後新增一對 小括號。property 的語法格式如下 proper...
shell中函式的使用方法
shell可以定義自己的函式,格式 function function name 舉個例子 fun echo function is start funecho function is end 執行的結果 function is start hello world function isend如果新...
MySQL中IF函式的使用方法
if函式根據條件的結果為true或false,返回第乙個值,或第二個值 if condition,value if true,value if false 引數 描述 condition 必須,判斷條件 value if true 可選,當條件為true值返回的值 value if false 可選...