django - 为什么 Django 更新页面和注销不起作用?
问题描述
我是匿名用户时点击分析页面,登录后用户没有改变
我不明白我登录但用户没有出现的原因。
此外,当我单击注销时,它也不起作用。下面是我的注销代码。如果有人能帮助我,我真的很感激!!
from django.shortcuts import render,redirect
import hashlib
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.models import AnonymousUser
from django.contrib.auth import authenticate,get_user_model,login,logout,get_user
from .forms import UserLoginForm,UserRegisterForm
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
from django.template import Template,Context
from .decorators import unauthenticated_user,allowed_users, admin_only
from django.contrib.auth.decorators import login_required
@csrf_exempt
@unauthenticated_user
def login_view(request):
next = request.GET.get('next')
form =UserLoginForm(request.POST or None)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username,password=password)
login(request,user)
if next:
return redirect(next)
else:
return redirect('/home')
context = {
'form': form,
}
return render(request,'users/login.html',context)
def index(request):
return render(request,'users/home.html')
@csrf_exempt
def register_view(request):
next = request.GET.get('next')
register_form = UserRegisterForm(request.POST or None)
if register_form.is_valid():
user = register_form.save(commit=False)
password = register_form.cleaned_data.get('password1')
user.set_password(password)
user.save()
new_user = authenticate(username=user.username,password=password)
login(request, new_user)
if next:
return redirect(next)
return redirect('/userlist')
context = {
'form': register_form,
}
return render(request,'register.html',context)
def logout_view(request):
user = get_user(request)
logout(request)
request.session.flush()
print('you are log out from cms!')
request.user = AnonymousUser
return render(request,'logout.html')
def userlist(request):
User = get_user_model()
result = User.objects.all()
#template = Template('userlist.html')
#html = template.render(Context({'content': result}))
return render(request,'userlist.html',{'content':result})
def adduser(request):
return render(request,'todo.html')
@login_required(login_url='accounts/login/')
def notpermitted(request):
return render(request,'NotPermitted.html')
这是模板中的侧边栏。侧边栏将根据用户滚动而变化。
{% load static %}
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="/home">
<div class="sidebar-brand-icon">
<img class="img-responsive center-block" src="{% static 'img/cms.png'%}" alt="" width="72" height="57">
</div>
</a>
<!-- Divider -->
<hr class="sidebar-divider my-0">
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" href="/dashboard">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>
<!-- Divider -->
<hr class="sidebar-divider">
<!-- Heading -->
<div class="sidebar-heading">
Function
</div>
<!-- Nav Item - Pages Collapse Menu -->
{% if request.user.is_staff %}
<li class="nav-item">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseFive"
aria-expanded="true" aria-controls="collapseFive">
<i class="fas fa-fw fa-chart-area"></i>
<span>Dataset</span>
</a>
<div id="collapseFive" class="collapse" aria-labelledby="headingFive" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Dataset:</h6>
<a class="collapse-item" href="/adddata">Add Dataset</a>
<a class="collapse-item" href="/datasetlist">Datasets</a>
</div>
</div>
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseThree"
aria-expanded="true" aria-controls="collapseThree">
<i class="fas fa-fw fa-cog"></i>
<span>historical Data</span>
</a>
<div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Dataset:</h6>
<a class="collapse-item" href="/upload">upload</a>
<a class="collapse-item" href="/home">Rest</a>
</div>
</div>
</li>
{% endif %}
<li class="nav-item">
<a class="nav-link collapsed" href="/processed" data-toggle="collapse" data-target="#collapseTwo"
aria-expanded="true" aria-controls="collapseTwo">
<i class="fas fa-fw fa-cog"></i>
<span>ProcessedData</span>
</a>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Dataset:</h6>
<a class="collapse-item" href="/processed">list</a>
<a class="collapse-item" href="/processed/opc">opc</a>
<a class="collapse-item" href="/processed/mqtt">mqtt</a>
</div>
</div>
</li>
<!-- Nav Item - Utilities Collapse Menu -->
<li class="nav-item">
<a class="nav-link collapsed" href="/analyse" data-toggle="collapse" data-target="#collapseUtilities"
aria-expanded="true" aria-controls="collapseUtilities">
<i class="fas fa-fw fa-wrench"></i>
<span>Analyse</span>
</a>
<div id="collapseUtilities" class="collapse" aria-labelledby="headingUtilities"
data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Methode:</h6>
<a class="collapse-item" href="/analyse/fft">Fast Fourier Methode</a>
<a class="collapse-item" href="/analyse/limit_monitoring">Limit Monitoring</a>
</div>
</div>
</li>
<!-- Divider -->
<hr class="sidebar-divider">
{% if request.user.is_superuser %}
<!-- Heading -->
<div class="sidebar-heading">
Usermanagement
</div>
<li class="nav-item">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseFour"
aria-expanded="true" aria-controls="collapseFour">
<i class="fas fa-fw fa-cog"></i>
<span>Users</span>
</a>
<div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">User:</h6>
<a class="collapse-item" href="/userlist">List</a>
<a class="collapse-item" href="/adduser">add User</a>
</div>
</div>
</li>
{% endif %}
</ul>
这是顶栏!当前用户将在此处列出。``
<!-- Sidebar Toggle (Topbar) -->
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
<i class="fa fa-bars"></i>
</button>
<!-- Topbar Search -->
<form
class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="form-control bg-light border-0 small" placeholder="Search for..."
aria-label="Search" aria-describedby="basic-addon2">
<div class="input-group-append">
<button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i>
</button>
</div>
</div>
</form>
<!-- Topbar Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Nav Item - Search Dropdown (Visible Only XS) -->
<li class="nav-item dropdown no-arrow d-sm-none">
<a class="nav-link dropdown-toggle" href="#" id="searchDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-search fa-fw"></i>
</a>
<!-- Dropdown - Messages -->
<div class="dropdown-menu dropdown-menu-right p-3 shadow animated--grow-in"
aria-labelledby="searchDropdown">
<form class="form-inline mr-auto w-100 navbar-search">
<div class="input-group">
<input type="text" class="form-control bg-light border-0 small"
placeholder="Search for..." aria-label="Search"
aria-describedby="basic-addon2">
<div class="input-group-append">
<button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i>
</button>
</div>
</div>
</form>
</div>
</li>
<!-- Nav Item - Alerts -->
<li class="nav-item dropdown no-arrow mx-1">
<li class="nav-item"><a href="/accounts/login/" class="nav-link link-dark px-2">Login</a></li>
<li class="nav-item"><a href="/accounts/logout/" class="nav-link link-dark px-2">Logout</a></li>
</li>
<div class="topbar-divider d-none d-sm-block"></div>
<!-- Nav Item - User Information -->
<li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="mr-2 d-none d-lg-inline text-gray-600 small">Hello, {{ request.user }}</span>
</a>
</li>
</ul>
```` 我使用 request.user 来决定用户滚动。当我第一次加载此页面时,该页面似乎存储在浏览器中。因此,当我登录后更新页面时,我之前加载的页面并没有更改侧边栏和顶部栏中的用户。我在我的浏览器中禁用了cookies和缓存,但它仍然不起作用,希望有人能回答!
解决方案
推荐阅读
- python - Python tkinter:删除菜单检查按钮
- c# - 在测试中使用已实现的方法是好主意还是坏主意?
- python - urllib.request.urlopen 不停止
- ios - 取消 UIview.animation 与用户交互
- vb.net - 自定义文化不能传LCID,只能通过名字,参数名:culture
- python - Python (Selenium/BeautifulSoup) 搜索结果动态 URL
- xamarin - MainActivity 泄露了原本绑定在这里的 ServiceConnection CustomTabsServiceConnectionImpl
- html - 根据元素的宽度更改 CSS
- matlab - 转换向量索引超出数组边界 - matlab
- html - 设置默认选择的选项 - Angular JS