[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—中间件详解



相关文章
|
7天前
|
Linux 数据库管理 Python
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
66 4
|
4天前
|
开发框架 数据库 开发者
Web开发新境界:用Python玩转Django和Flask!
【6月更文挑战第12天】Python的Web开发框架Django和Flask各有千秋。Django是全能型框架,适合快速开发大型应用,提供ORM、模板引擎、URL路由和后台管理等全面功能。Flask则轻量级且灵活,适用于小型到中型应用,以其简单易用、高度可扩展和灵活路由著称。两者结合使用,能应对各种Web开发需求。
|
2天前
|
小程序 前端开发 JavaScript
计算机Python项目|django傣族节日及民间故事推广小程序
计算机Python项目|django傣族节日及民间故事推广小程序
|
2天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
8天前
|
缓存 监控 中间件
探究Django中间件的神奇:功能、应用场景和核心方法
在Django中,中间件是一个强大的概念,它们提供了一种灵活的方式来处理请求和响应。本文将探讨Django中间件的基本概念、常见应用场景以及中间件类中的父类和核心方法。
|
9天前
|
中间件 开发者 Python
Django——中间件
Django——中间件
|
11天前
|
SQL 前端开发 关系型数据库
28. Python Web 编程:Django 基础教程
28. Python Web 编程:Django 基础教程
17 2
|
12天前
|
缓存 安全 中间件
Python小白必备!清华大牛整理的《Django零基础入门到精通》手册
Django 是 Python 社区的两大最受欢迎的 Web 框架之一(另一个是 Flask)。凭借功能强大的脚手架和诸多开箱即用的组件,可以使你能够以最小的代价构建和维护高质量的Web应用。 从好的方面来看,Web 开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。 通过减少重复的代码,Django 使你能够专注于 Web 应用上有趣的关键性的东西。 为了达到这个目标,Django提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。 同时,Django 尝试留下一些方法,来让你根据需要在framework
|
11天前
|
消息中间件 存储 NoSQL
阿里开源中间件一览
阿里开源中间件一览
14 2
|
1月前
|
算法 NoSQL Java
2023年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯.....)