[Python]Django中间件

简介: [Python]Django中间件

0711d7009acb4856b255cf6a73c3d05e.jpg

前言

系列文章目录

[Python]目录

视频及资料和课件

链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234

提取码:1234

1. 中间件简介

中间件就是伴随请求和响应的时候会发生的事情。

Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。

中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。

我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。

2. 中间件的定义

定义中间件,就是在请求的处理函数外再包一层函数。即使用闭包修饰请求的处理函数。

中间件的应用场景:例如,中间件可以在进行相应的请求处理前,判断用户是否登录过

# 定义一个中间件
# 在请求处理前输出 before request
# 在请求处理后输出 after request
# 参数get_response为请求的处理函数
def simple_middleware(get_response):
    def middleware(request):
        print('before request')
        # 调用请求的处理函数处理请求
        response = get_response(request)
        print('after request')
        # 返回请求的响应
        return response
    # 返回中间件处理后的请求处理函数
    return middleware

3. 中间件的注册

4. 中间件测试

中间件在每次请求和响应都会调用,不管调用任何请求都会触发中间件

5. 多个中间件的执行顺序

  • 在请求视图(请求处理函数)处理前,中间件由上至下依次执行
  • 在请求视图(请求处理函数)处理后,中间件由下至上依次执行

定义两个中间件:

# 定义一个中间件
# 在请求处理前输出 before request
# 在请求处理后输出 after request
# 参数get_response为请求的处理函数
def simple_middleware1(get_response):
    def middleware(request):
        print('before request 111111111111111111')
        # 调用请求的处理函数处理请求
        response = get_response(request)
        print('after request 111111111111111111')
        # 返回请求的响应
        return response
    # 返回中间件处理后的请求处理函数
    return middleware
def simple_middleware2(get_response):
    def middleware(request):
        print('before request 222222222222222222222')
        # 调用请求的处理函数处理请求
        response = get_response(request)
        print('after request 222222222222222222222')
        # 返回请求的响应
        return response
    # 返回中间件处理后的请求处理函数
    return middleware

注册中间件:

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.middleware.simple_middleware1',
    'login.middleware.simple_middleware2'
]

6. 补充

def simple_middleware(get_response):
  # 中间件第一次执行,会执行此处代码
    def middleware(request):
        print('before request')
        # 调用请求的处理函数处理请求
        response = get_response(request)
        print('after request')
        # 返回请求的响应
        return response
    # 返回中间件处理后的请求处理函数
    return middleware

过滤路径需要通过类中间件实现。

以类的形式实现中间件:Django—中间件详解



相关文章
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
182 45
|
1月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
65 2
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
44 1
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
44 4
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第10天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django以功能全面、文档完善著称,适合快速开发;Flask轻量灵活,易于上手;Pyramid介于两者之间,兼顾灵活性和安全性。选择框架时需考虑项目需求和个人偏好。
40 1
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第6天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django功能全面,适合快速开发;Flask灵活轻量,易于上手;Pyramid介于两者之间,兼顾灵活性和可扩展性。文章分析了各框架的优缺点,帮助开发者根据项目需求和个人偏好做出合适的选择。
50 4
|
2月前
|
存储 Shell 数据库
Python编程--Django入门:用户账户(二)
Python编程--Django入门:用户账户(二)
34 2
|
2月前
|
存储 数据库 Python
Python编程--Django入门:用户账户(一)
Python编程--Django入门:用户账户(一)
23 1
|
2月前
|
中间件 Python
理解Django中间件及其应用实例
理解Django中间件及其应用实例
40 0
|
中间件 数据库 Python
Django中间件Middleware简单使用
Django中间件Middleware简单使用
147 5