渲染('django.contrib.auth.views.login')指向不同的URL而不是{%url'django.contrib.auth.views.login'%}

时间:2013-04-27 04:50:39

标签: python django

我正在使用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。如果需要有关该项目的任何其他信息,请与我们联系。

2 个答案:

答案 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>

所以我想你必须删除单引号