我使用默认的django身份验证系统,很少进行自定义。登录和注销的核心功能按预期工作。问题是,在我的登录表单模板下面的代码片段:Django默认登录视图总是填充下一个字段
{% if next %}
<p>Please login to see this page.</p>
{% endif %}
这是从官方文档中提供的示例登录视图调整。这个想法是,如果用户在未登录的情况下尝试访问受保护页面,他/她将被重定向到登录页面,并且next
参数被设置为受保护页面的URL。这工作正常。
但是,当用户单击登录url并直接导航到登录url时,不应显示上述错误消息。但在这种情况下,next
参数将从settings.py
设置为LOGIN_REDIRECT_URL
,并且我们看到此错误消息。
我试图调试以找到问题所在,并在django.contrib.auth.views.LoginView
类中找到它。本课程有一个方法get_success_url
,该方法从next
参数或LOGIN_REDIRECT_URL
获取重定向url。此方法正被用于在方法get_context_data
中填充登录表单的上下文,在我看来这是不正确的。 dispatch
方法也使用get_success_url
来获取重定向url,这是正确的,因为目的是实际重定向。
我不确定我的解释是否清楚,如果不是,请告诉我。有没有解决方法?我应该为此提交一个错误报告吗?
使用:
- 的Python:3.6(Anaconda3,64位)
- Django的:1.11.1
- django的登记:2.2
募集Django的错误https://code.djangoproject.com/ticket/28229。
您可以发布错误或堆栈跟踪以及设置和查看文件的代码 – Exprator
没有错误堆栈跟踪。请阅读问题文字。登录视图在不应该的时候设置“next”属性。那就是问题所在。也没有任何观点,我使用django的默认授权系统的意见。除了'startproject'生成的内容之外,我还没有在settings文件中定制任何东西。 –
你说你看到错误信息?那是什么? – Exprator