Python Django默认登录视图始终填充下一个字段
我使用的是默认的django身份验证系统,几乎没有定制。登录和注销的核心功能按预期工作。我的登录表单模板中的以下代码段存在问题:Python Django默认登录视图始终填充下一个字段,python,django,python-3.x,django-authentication,Python,Django,Python 3.x,Django Authentication,我使用的是默认的django身份验证系统,几乎没有定制。登录和注销的核心功能按预期工作。我的登录表单模板中的以下代码段存在问题: {% if next %} <p>Please login to see this page.</p> {% endif %} {%if next%} 请登录以查看此页面 {%endif%} 这是根据官方文档中提供的示例登录视图改编的。其思想是,如果用户试图在未登录的情况下访问受保护的页面,他/她将被重定向到登录页面,并且next参
{% if next %}
<p>Please login to see this page.</p>
{% endif %}
{%if next%}
请登录以查看此页面
{%endif%}
这是根据官方文档中提供的示例登录视图改编的。其思想是,如果用户试图在未登录的情况下访问受保护的页面,他/她将被重定向到登录页面,并且next
参数被设置为受保护页面的url。这很好用
但是,当用户单击登录url并直接导航到登录url时,不应显示上述错误消息。但是在这种情况下,next
参数被设置为LOGIN\u REDIRECT\u URL
fromsettings.py
,我们看到了这个错误消息
我试图调试以找到问题所在,并在django.contrib.auth.views.LoginView
类中找到了它。此类有一个方法get\u success\u url
,该方法从next
参数或LOGIN\u redirect\u url
获取重定向url。此方法用于在方法get\u context\u data
中填充登录表单的上下文,我认为这是不正确的。dispatch
方法还使用get\u success\u url
获取重定向url,这是正确的,因为目的是实际重定向
我不确定我的解释是否清楚,如果不清楚请告诉我。有解决办法吗?我应该为此提交错误报告吗
使用:
- Python:3.6(Anaconda3,64位)
- Django:1.11.1
- django注册:2.2
引发了Django bug。这不是一个解决方案,更像是一个解决方案:
假设您的
LOGIN\u REDIRECT\u URL
设置为/
,您可以编写{%if next!=“/“%}
而不是{%if next%}
来发布错误或堆栈跟踪,以及设置和查看文件的代码。没有错误堆栈跟踪。请阅读问题文本。登录视图设置了next
属性,但不应该设置。这就是问题所在。也没有视图,我使用的是django的默认auth系统附带的视图。除了由startproject
生成的内容之外,我还没有在设置文件中自定义任何内容。您说看到错误消息了吗?这是什么?您是否在受保护的视图上方使用登录所需的装饰器?您是否在设置文件中定义了登录URL?由于转向基于类的身份验证视图,这似乎是1.11中的回归。如果你愿意,你可以。