我正在使用Django 1.5.1使用Django身份验证系统的默认实现。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.markup',
'django.contrib.admindocs',
'flowcharts',
'south',
'helpdesk',
)
以下是注册/登录中的模板:
{% 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 %}
并在我的urls.py文件中:
urlpatterns = patterns('',
url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
url(r'^accounts/logout/$', 'django.contrib.auth.views.logout' , {'next_page': '/accounts/login/'}),
)
表单操作映射到'/ helpdesk / login /'
但是当我在python shell中运行render('django.contrib.auth.views.login')时,我得到'/ accounts / login /',这是我希望表单指向的URL。如果需要有关该项目的任何其他信息,请与我们联系。
答案 0 :(得分:1)
您想使用django身份验证系统:
在你的urls.py中有这个:
urlpatterns = patterns('',
url(r'^accounts/', include('django.contrib.auth.urls'))
)
在您的注册/ login.html中:
<form method="post" action="{% url login %}">
您希望在注销中提供next_url,因此每当您想要注销时都会注意:
<a href="{% url logout %}?next=/accounts/login/">Logout</a>
检查您指向的链接的第191行。他们将/helpdesk/login/
命名为login
,因此{% url login %}
指向/helpdesk/login
。
您url(r'^helpdesk/', include('helpdesk.urls'))
url(r'^accounts/', include('django.contrib.auth.urls'))
之前必须urls.py
{。}}。更改这两个网址的顺序。
答案 1 :(得分:-1)
这就是我正在使用并使其正确
<li><a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a></li>
所以我想你必须删除单引号