Django:包含在出现错误时重新加载登录表单
我正在构建一个Django应用程序,如果没有用户登录,我将显示一个登录页面,并在该页面中显示登录表单。我按照这些步骤开始,然后我添加了一个上下文处理器,以便在登录页视图中显示登录表单,并将其添加到settings.py中的context_processors列表中 所有这些都非常有效!我可以成功地让某人登录,或者如果我输入了错误的密码,我会收到凭据不正确的消息 问题:如果我输入了错误的密码,身份验证失败,网站会自动重新加载登录表单,并将消息发送给用户(因此用户将转到另一个页面)。如何在最初显示表单的同一登录页中显示错误消息?(注意:我正在使用默认的Django身份验证,还没有做任何事情来定义任何特殊行为) landing.html:Django:包含在出现错误时重新加载登录表单,django,django-views,django-forms,Django,Django Views,Django Forms,我正在构建一个Django应用程序,如果没有用户登录,我将显示一个登录页面,并在该页面中显示登录表单。我按照这些步骤开始,然后我添加了一个上下文处理器,以便在登录页视图中显示登录表单,并将其添加到settings.py中的context_processors列表中 所有这些都非常有效!我可以成功地让某人登录,或者如果我输入了错误的密码,我会收到凭据不正确的消息 问题:如果我输入了错误的密码,身份验证失败,网站会自动重新加载登录表单,并将消息发送给用户(因此用户将转到另一个页面)。如何在最初显示表
{% block content %}
Some welcome message!
{% include "registration/login.html"%}
Some other contents
{% endblock content %}
context_processors.py:
def include_login_form(request):
from django.contrib.auth.forms import AuthenticationForm
form = AuthenticationForm()
return {'form': form}
Login.html:
{% extends 'familytree/base.html' %}
{% block content %}
{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}
{% if next %}
{% if user.is_authenticated %}
<p>Your account doesn't have access to this page. To proceed,
please login with an account that has access.</p>
{% else %}
<p>Please login to see this page.</p>
{% endif %}
{% endif %}
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table>
<tr>
<td>Email address: </td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="Log in" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
<a href="{% url 'password_reset' %}">Forgot password?</a>
{% endblock %}
{%extends'familytree/base.html%}
{%block content%}
{%if form.errors%}
您的用户名和密码不匹配。请再试一次
{%endif%}
{%if next%}
{%if user.u经过身份验证%}
您的帐户无权访问此页面。继续,
请使用具有访问权限的帐户登录
{%else%}
请登录以查看此页面
{%endif%}
{%endif%}
{%csrf_令牌%}
电邮地址:
{{form.username}
{{form.password.label_tag}}
{{form.password}}
{%endblock%}
您是否尝试从表单中删除url操作:谢谢您的想法!当我尝试这样做时,它确实让我保持在同一页上,但它不再显示用户名/密码不匹配的错误消息:/n然后我也尝试了url“landing”,但同样的事情:我保持在同一页上,但没有显示错误文本