我正在构建一个应用程序来做一些工作。工作需要用户登录。除了将登录更改为退出之外,其他一切工作正常。
所以这是我在view.py
中用于 user_login 和 user_logout 的代码 from django.shortcuts import render
from purpose_finder import forms
from purpose_finder.functions import find_purpose
from purpose_finder.forms import UserForm,UserProfileInfoForm
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse,HttpResponseRedirect
from django.contrib.auth import login,logout,authenticate
@login_required
def user_logout(request):
logout(request)
return HttpResponseRedirect(reverse('index'))
这是为 user_login
def user_login(request):
if request.method=="POST":
username=request.POST.get('username') #get field from HTML code
password=request.POST.get('password')
user=authenticate(request, username=username,password=password)
if user:
if user.is_active:
login(request,user)
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponse("Account Deactivated")
else:
return HttpResponse("Login Failed!!")
else:
return render(request,'purpose_finder/login.html',{})
这是 base.html 的代码,大多数表单都使用 Bootstrap 顶部的静态导航栏来继承该代码
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<ul class="nav navbar-nav">
<li><a class="navbar-brand" href="{% url 'index' %} "
>Home</a></li>
<li><a class="navbar-link" href="{% url 'admin:index' %}"
>Admin</a></li>
<li><a class="navbar-link" href="{% url
'purpose_finder:user_register' %}" >Register</a></li>
{% if user.is_auhenticated %}
<li><a class="navbar-link" href="{% url
'user_logout' %}">Logout</a></li>
{% else %}
<li><a class="navbar-link" href="{% url
'purpose_finder:user_login' %}" >Login</a></li>
{% endif %}
</ul>
</div>
</nav>
如果我同时在导航栏中同时提供两个按钮,则可以登录和注销,但是仅当与 {%如果user.is_authenticated%} 一起使用时,我才停留在登录名上。事实是,这个** user.is_authenticated **不会显示任何结果。当我在shell中打印值时,它显示 True ,但在注入时在 base.html 中没有任何结果。任何帮助将不胜感激。