为了账号安全,请及时绑定邮箱和手机立即绑定

Django:@login_required 装饰器不会重定向到“下一个”

Django:@login_required 装饰器不会重定向到“下一个”

撒科打诨 2023-07-11 13:49:21
我正在使用 Django 构建一个字典应用程序,用户可以在其中定义单词。但是,我希望用户先登录才能执行此操作。@login_required我试图在我的define视图(允许用户定义单词的视图)上使用内置装饰器来实现此约束。使用@login_required,当我未登录并尝试定义一个单词(使用定义表单)时,我正确地重定向到登录页面。这是我在views.pylogin_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})此时我的网址看起来像这样:http://127.0.0.1:8000/login?next=/define到目前为止,一切都很好。然而,一旦我登录,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是处理定义的应用程序的名称。问题可能出在这些变量之一吗?
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您可以撤消设置中的更改并更改线路

    return HttpResponseRedirect(reverse(settings.LOGIN_REDIRECT_URL))

到 return redirect('/targeturl')


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信