python - django 中@login_required 和@method_decorator(login_required) 有什么区别

标签 python django

我是django的新手,我很困惑Django中的@login_required@method_decorator(login_required)有什么区别,我们应该使用哪个。提前致谢。

最佳答案

在基于函数的 View 中使用@login_required:

@login_required    
def my_view(request):
    return HttpResponse('hello')

您可以将 @method_decorator(login_required) 与基于类的 View 一起使用,

@method_decorator(login_required, name='dispatch')
class MyView(TemplateView):
    template_name = 'hello.html'

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(MyView, self).dispatch(*args, **kwargs)

然而,使用 LoginRequiredMixin 可能更简单:

from django.contrib.auth.mixins import LoginRequiredMixin

class MyView(LoginRequiredMixin, TemplateView):
    template_name = 'hello.html'

关于python - django 中@login_required 和@method_decorator(login_required) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42306257/

相关文章:

python - pydub 附加 - 引擎盖下行为的澄清

python - PIL/Pillow 将图像转换为列表并再次返回

python - 使用未保存的相关对象保存对象

python - Django:将 ManyToManyField 转换为 ForeignKey

python - 导入单词列表,不想在代码中重复一遍

python - Python 中的 for 循环 - 如何在循环内修改 i

django - 在 Django 中对多表继承进行注释

django - 模型选择字段。 ID而不是名称

django - 如何将 Django QuerySet 转换为列表?

python - 使用 Pandas 的 2 天跨度移动平均值