Python 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参

我使用的是默认的django身份验证系统,几乎没有定制。登录和注销的核心功能按预期工作。我的登录表单模板中的以下代码段存在问题:

{% if next %}
    <p>Please login to see this page.</p>
{% endif %}
{%if next%}
请登录以查看此页面

{%endif%}
这是根据官方文档中提供的示例登录视图改编的。其思想是,如果用户试图在未登录的情况下访问受保护的页面,他/她将被重定向到登录页面,并且
next
参数被设置为受保护页面的url。这很好用

但是,当用户单击登录url并直接导航到登录url时,不应显示上述错误消息。但是在这种情况下,
next
参数被设置为
LOGIN\u REDIRECT\u URL
from
settings.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中的回归。如果你愿意,你可以。