以下是我的用户登录页面的代码。如果登录显示注销链接,我正在请求用户登录。但是,当我点击提交时,打开新的主页并显示登录链接而不是注销。
<!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')
答案 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>