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

最佳答案

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

08-28 06:48