如何解决Django:@login_required装饰器不会重定向到“下一个”
我正在使用Django构建字典应用程序,用户可以在其中定义单词。但是,我希望用户能够登录后才能登录。
我正在尝试在@login_required
视图(允许用户定义单词的视图)上使用内置define
装饰器来实现此约束。
使用@login_required
,当我没有登录并尝试定义一个单词时(使用定义表),我可以正确地重定向到登录页面。
这是我在{strong> views.py 中的login_view
视图:
def login_view(request):
form = LoginForm(data=request.POST)
if form.is_valid():
username = form.cleaned_data["username"]
password = form.cleaned_data["password"]
user = authenticate(request,username=username,password=password)
if user is not None:
login(request,user)
return HttpResponseRedirect(reverse(settings.LOGIN_REDIRECT_URL))
return render(request,"users/login.html",{"form": form})
这时我的网址看起来像:
到目前为止一切顺利。但是,一旦我登录,Django便不会将我重定向到我最初尝试访问的定义表单(位于/ define)。在这种情况下,如何告诉Django将我重定向到定义表单?
此外,在我的 settings.py 中,我重新定义了LOGIN_URL
,LOGIN_REDIRECT_URL
和LOGOUT_REDIRECT_URL
变量,如下所示:
LOGIN_URL = "users:login"
LOGIN_REDIRECT_URL = "dictionary:index"
LOGOUT_REDIRECT_URL = "dictionary:index"
其中users
是处理登录的应用程序的名称,而dictionary
是处理定义的应用程序的名称。
问题可能出在这些变量之一吗?
解决方法
您可以撤消设置中的更改并更改行
return HttpResponseRedirect(reverse(settings.LOGIN_REDIRECT_URL))
到return redirect('/targeturl')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。