登录仅适用于管理员

时间:2015-01-05 22:30:46

标签: django authentication

我正在Django的一个项目上工作并尝试使用内置视图

  

django.contrib.auth.views.login

我有

  

(r' ^ accounts / login / $',auth_views.login)

在urls.py中

{% 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>

在注册/ login.html中,django要求使用登录视图。

我使用管理页面验证了用户/密码组合是否正确。在帐户/登录页面中,如果我输入我的管理员用户名/密码,它将登录我,但它不会为普通用户执行此操作。为什么会这样?

1 个答案:

答案 0 :(得分:0)

你不直接使用登录功能作为你的视图功能..并且管理页面正在运行,因为它没有使用你的url-mapping。

你需要

#views
from django.contrib.auth.views import login
def log_me_in(request):
   # todos.. authenticattion... 
   login(request, user)

和在网址

(r'^log_me_in/$', 'yourapp.views.log_me_in')

重要将您的登录功能命名为与来自身份验证的login()相同...否则您会陷入maximum recursion reached或类似的事情......意味着他们结束相互呼唤,进入无限循环..

<强> just read the docs