gpt4 book ai didi

Django @login_required 不重定向到登录页面

转载 作者:行者123 更新时间:2023-12-02 21:13:44 32 4
gpt4 key购买 nike

我在 Django 中使用基于类的 View 。 @login_required 装饰器没有重定向到登录页面。它仍然显示个人资料页面。

class ProfileView(TemplateView):
template_name='profile.html'

@login_required(login_url='/accounts/login/')
def dispatch(self, *args, **kwargs):
return super(ProfileView, self).dispatch(*args, **kwargs)

谁能帮帮我。我是 Django 新手,任何帮助将不胜感激。

提前致谢

最佳答案

您需要首先应用 method_decorator,然后将其传递给 login_required 函数装饰器。

类上的方法与独立函数不太一样,因此您不能只将函数装饰器应用于该方法。 您需要先将其转换为方法装饰器。

为了更清楚地说明,Django 的 View 装饰器返回一个带有签名 (request, *args, **kwargs) 的函数,但对于基于类的 View ,签名应采用以下形式 (自身,请求,*args,**kwargs)。现在,method_decorator 的作用是将第一个签名转换为第二个签名。

来自 decorating Class-based Views: 上的文档

The method_decorator decorator transforms a function decorator into a method decorator so that it can be used on an instance method.

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

class ProfileView(TemplateView):
template_name='profile.html'

@method_decorator(login_required(login_url='/accounts/login/'))
def dispatch(self, *args, **kwargs):
return super(ProfileView, self).dispatch(*args, **kwargs)

关于Django @login_required 不重定向到登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949388/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com