在一个Django项目中,我的主页视图如下:
@login_required
def home(request):
return render(request, 'home.html')
因此,当有人尝试访问主页时,如果没有人登录,他们会自动进入登录表单。这是直接来自 Django 文档的表单:
{% extends "base.html" %}
{% block content %}
{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}
<form method="post" action="{% url django.contrib.auth.views.login %}">
{% csrf_token %}
<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
{% endblock %}
一旦有人登录表单,他们就会被带到如下所示的主页:
{% extends "base.html" %}
{% block content %}
<form method="post" action="{% url django.contrib.auth.views.logout_then_login %}">
{% csrf_token %}
<input type="submit" value="logout" />
</form>
<h1>Home Page</h1>
{% endblock %}
如您所见,我尝试创建一个注销按钮,该按钮将用户带回登录页面。但是,我注意到当第一次到达登录页面时,URL 以 结尾?next=/
,而一旦我“注销”,我被带到的“登录”页面缺少一个 URL ?next=/
。当我尝试使用该页面登录时,我被发送到/accounts/profile/
不存在的 URL(而不是正确的主页 URL)。我猜我在 中做错了什么urls.py
,但我不确定是什么:
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
(r'^accounts/logout/$', 'django.contrib.auth.views.logout_then_login'),
我在这里想念什么?