Django基于类的视图装饰器属性错误

2024-04-25 03:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在我的Django应用程序中的几个基于类的视图的分派方法上使用decorator。下面是我尝试的一个示例视图:

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)

有以下装饰:

^{pr2}$

我得到了以下错误:

AttributeError at /dashboard/

'DashboardView' object has no attribute 'user'

如何让decorator使用此视图检索当前用户?在


Tags: django方法self视图应用程序示例分派def
1条回答
网友
1楼 · 发布于 2024-04-25 03:55:24

您可以使用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)

相关文档在这里:Introduction to Class-based Views

相关问题 更多 >