Django登录/发布登录

时间:2012-04-25 17:59:42

标签: python django login

我在使用django的用户帐户/登录时遇到问题。我正在尝试在登录后做一些事情,但在我登录网站后显示我还没有登录。例如在html标签中如果我使用{{user}}它打印出匿名用户即使我是没有登录。我不知道我的代码有什么问题:

views.py:

def index(request):
    return render_to response({'user', request.user})

urls.py:

(r'^$', 'tickets.views.index'),
(r'^accounts/login/$', 'django.contrib.auth.views.login' ),
(r'^accounts/logout/$','django.contrib.auth.views.logout'),

login.html是基本的django登录模板,在索引上我显示了{{user}}。

感谢您的帮助。

编辑:

我有一个模板标签,我只是没有输入它。我希望它说我登录后登录。例如:如果我使用帐户测试登录,我希望测试显示{{user}}不是匿名用户。

3 个答案:

答案 0 :(得分:0)

  1. 在您的设置中检查SESSION_ENGINE。它可能是缓存后端,和 缓存可以设置为虚拟。
  2. 检查MIDDLEWARE_CLASSES中的'django.contrib.sessions.middleware.SessionMiddleware。

答案 1 :(得分:0)

我只是重读了你的问题。 应该在未登录时获取AnonymousUser。

请参阅the Django documentation

  

匿名用户是未经过身份验证的用户,即他们未提供有效的身份验证详细信息。但是,这并不一定意味着他们无权做任何事情。在最基本的层面上,大多数网站都授权匿名用户浏览大部分网站,许多网站允许匿名发布评论等。

答案 2 :(得分:0)

您很可能希望在模板中执行以下操作:

{% if user.is_authenticated %}
  <p>Hi logged in user!</p>
{% else %}
  <p>Please login</p>
{% endif %}

当用户尚未登录时,您将获得AnonymousUser的实例。您可以通过调用is_authenticated()方法来检查它们是否经过身份验证。