Python 如何将用户重新定向到登录后试图访问的页面?(Django)

Python 如何将用户重新定向到登录后试图访问的页面?(Django),python,django,Python,Django,所以目前我使用@login\u required来阻止用户访问某些页面并重定向它们,告诉他们需要登录。但我不明白的是,一旦他们登录,我如何“让他们”进入他们试图进入的页面。目前,我只是使用一个典型的render-to-u响应(“具有特定视图”),但如果我希望该响应出现在他们试图访问的任何地方,该怎么办。如何编写代码?您可以将url参数传递回登录页面,并在用户成功完成登录后使用该参数指导用户。所需的@login\u通常会将重定向字段名称(默认为“下一个”)传递回您,例如:/accounts/log

所以目前我使用@login\u required来阻止用户访问某些页面并重定向它们,告诉他们需要登录。但我不明白的是,一旦他们登录,我如何“让他们”进入他们试图进入的页面。目前,我只是使用一个典型的render-to-u响应(“具有特定视图”),但如果我希望该响应出现在他们试图访问的任何地方,该怎么办。如何编写代码?

您可以将url参数传递回登录页面,并在用户成功完成登录后使用该参数指导用户。

所需的@login\u通常会将重定向字段名称(默认为“下一个”)传递回您,例如:/accounts/login/?next=/polls/3/。因此,在您的登录视图中,在验证并登录用户后,您可以执行以下操作

response = HttpResponseRedirect(next)
# Do whatever else you need to do here with the response object
return response
请参见网站上的文档,上面写着:

默认情况下,用户应该重定向到的路径 成功的身份验证存储在名为 “下一个”

通常登录完成后,会转到“下一个”url

以下是django.contrib.auth.views.login的功能:

如果通过GET调用,它将显示一个登录表单,该表单将发布到同一个站点 网址。稍后将对此进行详细介绍。
如果通过POST调用,它将尝试记录 用户在如果登录成功,视图将重定向到URL 在下一步中指定。如果未提供next,它将重定向到 settings.LOGIN\u REDIRECT\u URL(默认为/accounts/profile/)。如果 登录不成功,它将重新显示登录表单


想详细说明一下吗?或者举一个例子,我不能收集你的意思,只是文字。它说页面找不到。。。在accounts/login/login/。我应该把它写在url配置文件中吗?或者,next基本上只能是一个字符串,比如“/polls/3/”。登录用户后,使用HttpResponseRedirect(下一步)应重定向到/polls/3/。如果您不确定,可以尝试导入pdb;pdb.set_trace在您的登录视图中,然后检查next的值。另一个选择是下一个简单的打印。这是假设redirect_field_name的变量使用默认的next.hmmph。。好吧这就是出现的问题,希望我能解决它。当重定向到登录页面时,url是什么?如果它类似于/user/login/?next=/some/other/path/您也可以执行类似于重定向_to=request.GET.GET('next','/')的操作;response=HttpResponseRedirect(重定向到);回复。如果这没有帮助,您可能需要包含更多代码。/?next=指向右侧页面。就在我把响应放在这里的时候,它像以前一样产生了奇怪的内置函数。另外,当我试图打印next时,它说变量在赋值之前被引用了。为了将HttpResponseRedirect(next)作为字符串获取,我必须对它做些什么吗?如何指定next是什么?或者更改了默认重定向的内容。我以前问过这个问题,但是setting.py中没有LOGIN\u REDIRECT\u URL,我不知道在哪里可以找到/添加它。您可以将LOGIN\u REDIRECT\u URL=“/your/path/”添加到settings.py中。