为什么第二个用户登录会将我重定向到/accounts/profile/ URL?
为什么第二个用户登录会将我重定向到/accounts/profile/ URL?
我正在使用Django内建的用户登录视图:\n
url(r'^user/login/$', 'django.contrib.auth.views.login', {'template_name': 'users/templates/login.html'}, name='user-login'),
\n登录后,当我再次访问user/login时,我可以再次登录。我提交表单后得到以下错误信息:\n
\n当前URL,accounts/profile/,没有匹配任何内容。\n
\n我在urls.py中没有声明这个URL。我做错了什么?为什么框架想要重定向到这个URL?
第二个用户登录后为什么会被重定向到/accounts/profile/ url?
这个问题的出现原因是在登录页面的HTML代码中没有正确设置"next"参数的值。在登录页面的HTML代码中,有一个隐藏的input元素,name属性为"next",value属性为"/",表示重定向的目标URL。
解决方法是在登录页面的HTML代码中正确设置"next"参数的值。将value属性修改为重定向目标URL的路径即可。
示例代码如下:
<form method="post" action=".">
~blah~
<input type="hidden" name="next" value="/accounts/profile/">
~blah~
</form>
祝好运!
第二个用户登录后将我重定向到/accounts/profile/的问题是因为django.contrib.auth.views.login在登录后会将用户重定向到/accounts/profile/。为了解决这个问题,可以在settings.py文件中设置LOGIN_REDIRECT_URL为任何你想要的URL。虽然重定向到一个不存在的URL是正确的,但是重定向到'/'可能会更合理一些。如果想要将用户重定向回默认的主页,可以在settings.py中添加"LOGIN_REDIRECT_URL = ('..')"。另外,如果页面显示"This page isn’t working localhost redirected you too many times.",可能是因为重定向次数过多。