簡體   English   中英

基於類的視圖的Django Decorator屬性錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM