即使用户登录,django登录也会失败

时间:2014-06-11 08:58:20

标签: django

以下是我的用户登录页面的代码。如果登录显示注销链接,我正在请求用户登录。但是,当我点击提交时,打开新的主页并显示登录链接而不是注销。

<!DOCTYPE html>
<html>
<head>
    <title>please login</title>
</head>
    <body>
        {% if form.errors %}
            <p class="text-warning">Your login credential did not match</p>
        {% endif %}
        <form role="form" class="form-horizontal" method="post" action="{% url 'boardgame_home_page' %}">
            {% csrf_token %}
            {{ form }}
            <input class="btn btn-primary" type="submit" value="Login"/>
            <input type="hidden" name="next" value="{{ next }}" />
        </form>
    </body>
</html>

主页代码

<!DOCTYPE html>
<html>
<head>
    <title>board game</title>
</head>
<body>
    {{ user.username }}
    {% if user.is_authenticated %}
        <a href="{% url 'boardgames_logout' %}">logout</a>
    {% else %}
        <a href="{% url 'boardgames_login' %}">login</a>
    {% endif %}

    {% if user.is_authenticated %}
        <h1> Hi {{ user.unsername }} !</h1>
    {% else %}
        <p>welcome the my page , <a href="{% url 'boardgames_login' %}">click here to login</a> </p>
    {% endif %}
</body>
</html>

当我提交表单时打开主页但是即使用户登录也要求登录

settint.py

LOGIN_REDIRECT_URL = 'boardgame_home_page'
LOGIN_URL = 'boardgames_login'
LOGOUT_URL = 'boardgames_logout'

urls.py

urlpatterns += patterns('django.contrib.auth.views',
    url(r'^logout/','logout',{'next_page':'boardgame_home_page'},name='boardgames_logout'),
)

urlpatterns = patterns('django.contrib.auth.views',
    url(r'^$','login',{'template_name':'login/login.html'},name='boardgames_login'),
)

我的家庭观点 来自django.shortcuts导入render_to_response

def home_page(request):
    return render_to_response('home/home.html')

2 个答案:

答案 0 :(得分:2)

您需要确保始终将RequestContext传递给您的观看次数。最简单的方法是使用render shortcut,如下所示:

from django.shortcuts import render

def home_page(request):
    return render(request, 'home/home.html')

在模板中,默认情况下,当前登录的用户可以{{ user }}使用,但前提是您传入RequestContext


  

现在我得到了AnonymousUser

这是有道理的,因为您的表单正在提交给boardgame_home_page,如果您提交的视图代码是主页表单,那么您实际上并未记录任何人。

查看django提供的sample code,其中显示了如何登录用户。您需要在主页视图中使用类似的逻辑。

最后,不要忘记log a user out correctly,然后确保所有需要登录用户的视图都是属性decorated

答案 1 :(得分:0)

您没有在请求参数中使用该用户。

使用主页模板中的request参数。

主/家/ HTML

<!DOCTYPE html>
<html>
<head>
    <title>board game</title>
</head>
<body>

    {% if request.user.is_authenticated %}
        <a href="{% url 'boardgames_logout' %}">logout</a>
    {% else %}
        <a href="{% url 'boardgames_login' %}">login</a>
    {% endif %}

    {% if request.user.is_authenticated %}
        <h1> Hi {{ request.user.unsername }} !</h1>
    {% else %}
        <p>welcome the my page , <a href="{% url 'boardgames_login' %}">click here to login</a> </p>
    {% endif %}
</body>
</html>