Django 用户经过身份验证(未经过身份验证)



我想创建一个简单的Django身份验证(注册/登录/注销),但我有问题。 如果成功完成登录,则应用程序转到名称为mypage的下一页,因为我在settings.py中定义了该行:LOGIN_REDIRECT_URL = '/mypage'

但是在新页面中,用户不是经过身份验证的用户(我的用户仅在"/login""/register"页面中保持身份验证,而不是在homemypage中保持身份验证)

知道我为什么错了吗?

这里的代码:

urls.py

url(r'^$', views.home),
url(r'^mypage/$', views.mypage),
url(r'^login/$', views.login, {'template_name': 'login.html', 'authentication_form': LoginForm}),
url(r'^logout/$', views.logout, {'next_page': '/login/'}),
url(r'^register/$', views.register),
url(r'^register/success/$', views.register_success)

views.py

def home(request):
return render_to_response('home.html')
def mypage(request):
return render_to_response('home2.html')

settings.py

LOGIN_REDIRECT_URL = '/mypage'

网页 1 :

{% if user.is_authenticated %}
<li>
<a href="/logout">LogOut</a>
</li>
{% else %}
<li>
<a href="/login">Login</a>
</li>
{% endif %}

HTML 2 :

{% if user.is_authenticated %}
<a href="#" class="lg">Start</a>
{% else %}
<p>Please Login to start</p>
{% endif %}

当您使用render_to_response时,您需要将用户添加到上下文手册,或者您可以将render与请求一起使用,在这种情况下user将被添加到您的模板上下文中

from django.shortcuts import render, render_to_response
def home(request):
return render(request, 'home.html')
def mypage(request):
return render_to_response('home2.html', {'user': request.user})

Inurls.py

from django.contrib.auth import views as auth_views
urlpatterns = [
url(r'^login/$', auth_views.login, {'template_name': 'login.html'}, name='login'),
url(r'^logout/$', auth_views.logout, name='logout'),
. . .. 
]

登录中.html

{% extends 'base.html' %}
{% block title %}Login{% endblock %}
{% block content %}
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{% endblock %}

相关内容

最新更新