Django开发 员工管理系统:中间件(初学,第三天)(3)

Django开发 员工管理系统:用户登录(初学,第三天)(2)-优快云博客文章浏览阅读279次,点赞20次,收藏8次。无状态:服务器不保存客户端请求的历史记录,每个请求独立处理。短链接:每次请求建立新连接,响应后立即关闭。每次请求都像初次见面,说完就忘,不留记忆。 https://blog.youkuaiyun.com/m0_65788436/article/details/145794624?fromshare=blogdetail&sharetype=blogdetail&sharerId=145794624&sharerefer=PC&sharesource=m0_65788436&sharefrom=from_link书接上回

1.示例:自定义 Django 中间件

(1)创建中间件类

这里定义了两个中间件,方便后面展示执行顺序 

from django.utils.deprecation import MiddlewareMixin

class MiddlewareA(MiddlewareMixin):
    def process_request(self, request):
        print("MiddlewareA: 处理请求")

    def process_response(self, request, response):
        print("MiddlewareA: 处理响应")
        return response

class MiddlewareB(MiddlewareMixin):
    def process_request(self, request):
        print("MiddlewareB: 处理请求")

    def process_response(self, request, response):
        print("MiddlewareB: 处理响应")
        return response

(2)注册中间件

打开 settings.py 文件,找到 MIDDLEWARE 列表,将你创建的中间件添加到列表中:

把下面的加入到上面即可,employees是你的app名称,middleware.auth.SimpleMiddleware表示SimpleMiddleware方法的位置,即middleware文件夹下auth文件中SimpleMiddleware函数。记得加逗号

'employees.middleware.auth.MiddlewareA',  # 添加自定义中间件
'employees.middleware.auth.MiddlewareB',

 执行顺序是, MIDDLEWARE中谁在前面先执行谁,例如
请求阶段:中间件按照 MIDDLEWARE 列表中的顺序从上到下依次执行

先执行 MiddlewareA 的 process_request。

然后执行 MiddlewareB 的 process_request。

响应阶段:中间件按照 MIDDLEWARE 列表中的顺序从下到上依次执行

先执行 MiddlewareB 的 process_response。

然后执行 MiddlewareA 的 process_response。

输出

MiddlewareA: 处理请求
MiddlewareB: 处理请求
MiddlewareB: 处理响应
MiddlewareA: 处理响应

2.总结的几种中间件方法(关注返回情况)

用deepseek总结生成的 

3.中间件实现登录校验

中间件: 登录页面必须要在不需要登录校验的列表中

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import redirect

class AuthMiddleware(MiddlewareMixin):

    def process_request(self, request):
        # 1.定义不需要登录校验的路径(如登录页面、静态文件等)
        white_list = ['/login/']  # 根据实际情况调整
        if request.path in white_list:
            return  # 放行,不需要登录校验

        # 2.检查用户是否已登录
        if not request.session.get("info"):
            return redirect('/login/')  # 未登录,重定向到登录页面

        # 3.已登录,继续传递请求
        return

注册:

效果

登录成功跳转

如果是没有登陆的状态,访问哪个管理界面,都只会返回登录的那个界面

学习:【最新Python的web开发全家桶(django+前端+数据库)-哔哩哔哩】 https://b23.tv/KbwbH6C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值