中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django開發中怎么給類視圖添加裝飾器

發布時間:2021-09-08 13:51:07 來源:億速云 閱讀:121 作者:chen 欄目:大數據

本篇內容介紹了“Django開發中怎么給類視圖添加裝飾器”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

場景:

Django 開發中,如果我們使用了類視圖,如:ListView、DetailView、UpdateView等,這時我們又想要對這個視圖添加一個裝飾器,來實現某種功能,這時候該怎么處理呢?

環境:

python 3.6

Django 1.11

錯誤用法

錯誤實現方式:

def is_login(func):    def wrapper(request,*args,**kwargs):    # 若檢測不到用戶就跳轉登錄頁面        if not request.session.get("user"):            return redirect(reverse('login'))        return  func(request,*args, **kwargs)    return wrapper
@is_loginclass myinfor(generic.ListView):    pass

報錯信息:

AttributeError: 'function' object has no attribute 'as_view'

正確用法 

實現方式一:

from django.utils.decorators import method_decorator

def is_login(func):    def wrapper(request,*args,**kwargs):    # 若檢測不到用戶就跳轉登錄頁面        if not request.session.get("user"):            return redirect(reverse('login'))        return  func(request,*args, **kwargs)    return wrapper
# 使用method_decorator將裝飾器包裹起來,同時,name參數是必須的,dispatch支持所有請求類型,包含get、post等,如果指定某種請求方式改為:name='get'. 教程源站(bigyoung.cn)
@method_decorator(is_login, name='dispatch')class myinfor(generic.ListView):    pass

實現方式二:

通過路由配置實現:(不推薦)

'''教程源站:BigYoung.cn'''
from django.utils.decorators import never_cache
urlpatterns += [    path('myinfo/', never_cache(myinfor.as_view()), name='myinfo'),]

進階用法:

如果你有多個裝飾器需要裝飾,如下多個裝飾器:

def is_login(func):    def wrapper(request,*args,**kwargs):    # 若檢測不到用戶就跳轉登錄頁面        if not request.session.get("user"):            return redirect(reverse('login'))        return  func(request,*args, **kwargs)    return wrapper
def is_admin(func):    # 檢測是否為admin管理員。教程源站(bigyoung.cn)    def wrapper(request,*args,**kwargs):        pass    return wrapper

“Django開發中怎么給類視圖添加裝飾器”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五常市| 大厂| 抚州市| 稷山县| 洛阳市| 尉氏县| 台前县| 武平县| 亚东县| 平原县| 宣化县| 辉县市| 陇西县| 安徽省| 镇原县| 棋牌| 太仓市| 道真| 岢岚县| 内黄县| 罗定市| 弥勒县| 富平县| 昭通市| 潼南县| 兴山县| 镇平县| 宝丰县| 葫芦岛市| 讷河市| 宜兰县| 蓝田县| 乾安县| 贵南县| 长汀县| 页游| 古丈县| 广元市| 兴山县| 北川| 如东县|