[英]Django Decorator Attribute Error for Class Based Views
我正在嘗試在我的Django應用程序中的幾個基於類的視圖的調度方法上使用裝飾器。 這是我嘗試過的一個示例視圖:
class DashboardView(TemplateView):
template_name="omninectar/dashboard.html"
def get_context_data(self, **kwargs):
....
@active_and_login_required
def dispatch(self, *args, **kwargs):
return super(DashboardView, self).dispatch(*args, **kwargs)
使用以下裝飾器:
active_required = user_passes_test(lambda u: u.is_active)
def active_and_login_required(view_func):
decorated_view_func = login_required(active_required(view_func))
return decorated_view_func
這使我出現以下錯誤:
AttributeError at /dashboard/
'DashboardView' object has no attribute 'user'
我如何讓裝飾器使用此視圖檢索當前用戶?
您可以使用django.utils.decorators.method_decorator
將舊風格的裝飾器轉換為方法裝飾器,如下所示:
from django.utils.decorators import method_decorator
...
class DashboardView(TemplateView):
template_name="omninectar/dashboard.html"
def get_context_data(self, **kwargs):
....
@method_decorator(active_and_login_required)
def dispatch(self, *args, **kwargs):
return super(DashboardView, self).dispatch(*args, **kwargs)
相關文檔在這里: 基於類的視圖簡介
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.