【问题标题】:django user authenticated (not authenticated )django 用户已通过身份验证(未通过身份验证)
【发布时间】:2017-09-10 01:09:38
【问题描述】:

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

【问题讨论】:

  • 包含views.py
  • @Astik Anand where Include views.py ?
  • 我的意思是在这里也包括您的观点。
  • @Astik Anand 这就是我对注册的所有看法
  • @Astik Anand 有什么想法吗?

标签: python django authentication


【解决方案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})

【讨论】:

  • 我认为现在可以工作了,谢谢您需要为我希望像这样return render_to_response('home2.html', {'user': request.user}) 进行用户身份验证的所有页面执行此操作?
  • 如果你想使用render_to_response,可以。
【解决方案2】:

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

【讨论】:

  • 又是某个用户未在 mypage 中进行身份验证..因为auth_views 必须用于所有正则表达式
  • 不需要这样做。
  • 登录后尝试打印一些内容以确保它可以正常工作,例如&lt;h2&gt;{{user.username}}&lt;/h2&gt; 并告诉我。
  • 您是否尝试在您的home2.html 上打印username,上面写着什么??
  • 我可以在登录和注册页面看到用户olny
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多