首页 > 解决方案 > 为什么 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和缓存,但它仍然不起作用,希望有人能回答!

标签: djangodjango-views

解决方案


推荐阅读