2

我开始将基于函数的视图转换为基于类的视图。这是我第一次使用基于类的视图,所以我真的不知道正确的方法。

FBV的代码:

@auth_check
def thank_you(request):
    return render(request, 'thank_you.html')

CBV的代码:

class ThankYouView(TemplateView):
    template_name = "thank_you.html"

我会把 auth_check 装饰器放在哪里?我试图把它放在班级的顶部,但我得到了一个错误。然后我在类中创建 def 并将装饰器放在它的顶部,但仍然出现错误。

4

1 回答 1

3

https://docs.djangoproject.com/en/dev/topics/class-based-views/intro/#decorating-the-class

使用基于类的视图,您可以装饰dispatch方法。

from django.utils.decorators import method_decorator

class ThankYouView(TemplateView):
    template_name = "thank_you.html"

    @method_decorator(auth_check)
    def dispatch(self, *args, **kwargs):
        return super(ThankYouView, self).dispatch(*args, **kwargs)
于 2013-03-03T16:29:24.887 回答