0

我在 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。让我知道是否需要有关该项目的任何其他信息。

4

2 回答 2

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. 更改这两个 url 的顺序。

于 2013-04-27T06:05:05.990 回答
-1

这就是我正在使用并让它正确的东西

<li><a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a></li>

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

于 2013-04-27T05:26:27.653 回答