在t\login_app\middleware\ 新建 verify.pyfrom django.shortcuts import redirect from django.utils.deprecation import MiddlewareMixin class VerifyMiddleware(MiddlewareMixin): def process_request(self, request): if request.path_info in [/login/,/login/login/data/,/login/logout/]: return info_dictrequest.session.get(info) if info_dict: request.user_idinfo_dict[id] request.user_nameinfo_dict[username] request.user_roleinfo_dict[role] return else: return redirect(/login/)在setting.py中注册MIDDLEWARE [ django.middleware.security.SecurityMiddleware, django.contrib.sessions.middleware.SessionMiddleware, django.middleware.common.CommonMiddleware, django.middleware.csrf.CsrfViewMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, django.contrib.messages.middleware.MessageMiddleware, django.middleware.clickjacking.XFrameOptionsMiddleware, login_app.middleware.verify.VerifyMiddleware, ]views login.pyimport json from django.http import HttpResponse, JsonResponse from django.shortcuts import render, redirect from django.views.decorators.csrf import csrf_exempt from admin_app.models import UserInfo from utils_app.utils.encryption import md5 # Create your views here. def login(request): return render(request, login/login.html) csrf_exempt def login_data(request): usernamejson.loads(request.body)[username] passwordjson.loads(request.body)[password] passwordmd5(password) querysetUserInfo.objects.filter(usernameusername,passwordpassword).first() if queryset: request.session[info] {id:queryset.id,username:queryset.username,role:queryset.role} request.session.set_expiry(60*60*24*7) #保存时间7天 return JsonResponse({status:True}) return JsonResponse({status:False,error:用户名密码错误}) def logout(request): request.session.clear() return redirect(/login)登录前端页面login.html{% load static %} !DOCTYPE html html langzh-CN idcrm-html head meta charsetUTF-8 / title登录 · 客户管理系统/title meta nameviewport contentwidthdevice-width, initial-scale1.0 / link relstylesheet href{% static login/css/login.css %} /head body div idcrm-login-box h1客户管理系统/h1 p请输入账号和密码登录/p form onsubmitreturn false; div classcrm-form-group label forusername账号/label input typetext idusername classcrm-input placeholder请输入账号 autocompleteusername / /div div classcrm-form-group label forpassword密码/label input typepassword idpassword classcrm-input placeholder请输入密码 autocompletecurrent-password / /div button classcrm-btn idbtn_log 登 录 /button /form div idcrm-footer © 备案号xxxxx-xxxxx-xxxxx /div /div script src{% static bootstrap-3.4.1-dist/js/jquery-3.7.1.js %}/script script $(#btn_log).click(function () { $.ajax({ url:/login/login/data/, type:post, data:JSON.stringify({ username:$(#username).val(), password:$(#password).val(), }), dataType:JSON, success:function(res){ if(res.status){ window.location.href/ }else{ alert(res.error) location.reload() } } }) }) /script /body /html登录后 前端 页可加上div classcrm-user-dropdown button classcrm-user-btn onclicktoggleDropdown() {{ request.user_name }} ▾ /button ul classcrm-dropdown-menu idcrmDropdown lia href# 个人中心/a/li {% if request.user_role 2 %} lia href/admin/⚙️ 进入后台/a/li {% endif %} lia href/login/logout/ 退出登录/a/li /ul /div