django用户通过身份验证(未经过身份验证)

时间:2017-09-10 01:09:39

标签: python django authentication

我想创建一个简单的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'

html 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 %}

2 个答案:

答案 0 :(得分:1)

urls.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'),
    . . .. 
]

login.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 %}

答案 1 :(得分:1)

当您使用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})