Django高级扩展之中间件

这篇具有很好参考价值的文章主要介绍了Django高级扩展之中间件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

中间件是Django请求/响应处理的钩子框架。它是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出。每个中间件组件负责实现一些特定的功能。例如,Django包含一个中间件组件AuthenticationMiddleware,它使用会话将用户与请求关联起来。

目录

方法介绍

__init__

process_request(self, request)

process_view(self, request_view_func, view_args,view_kwargs)

process_template_response(self, request,reponse)

process_response(self, request,reponse)

process_exception(self, request,exception)

默认中间件

自定义中间件

函数方式

创建中间件

中间件注册

请求验证

类方式

创建中间件

引入

定义类和请求处理

配置中间件

请求验证

总结

参考文章


方法介绍

__init__

不需要传参数,服务器响应第一个请求的时候自动调用,用于确定是否启用该中间件。

process_request(self, request)

在执行视图之前被调用(分配url匹配视图之前),每个请求都会调用,返回None或者HttpResponse对象。

process_view(self, request_view_func, view_args,view_kwargs)

调用视图之前执行,每个请求都会调用,返回None或者HttpResponse对象。

process_template_response(self, request,reponse)

在视图刚好执行完后调用,每个请求都会调用,返回None或者HttpResponse对象。

使用render时。

process_response(self, request,reponse)

所有相应返回浏览器之前调用,每个请求都会调用,返回None或者HttpResponse对象。

process_exception(self, request,exception)

当视图抛出异常时调用,返回HttpResponse对象。

默认中间件

在项目配置settings.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',
]

自定义中间件

工程目录project下创建middleware/应用名称/目录层级。

如下图所示:

Django高级扩展之中间件

函数方式

创建中间件

可通过函数方式来定义中间件。

在middleware目录下创建funMiddle.py,内容如下:

def funMiddle(get_response):
    def middleware(request):
        response = get_response(request)

        print('这是函数方法中间件')
        print('参数:', request.GET.get('name'))

        return response

    return middleware

中间件注册

在settings.py中注册。

Django高级扩展之中间件

请求验证

路由

# 中间件
path('middle_test', views.middle_test, name='middle_test'),

视图

def middle_test(request):

    print('这里是视图,参数为', request.GET.get('name'))

保存后运行项目,浏览器访问后控制器查看结果:

Django高级扩展之中间件

类方式

创建中间件

创建testMiddle.py文件

引入

在testMiddle.py中引入

from django.utils.deprecation import MiddlewareMixin

定义类和请求处理

定义testMIddle类,并设置方法接收get请求的参数并打印。

class testMiddle(MiddlewareMixin):

    def process_request(self, request):
        print("GET请求参数为:", request.GET.get('name'))

配置中间件

修改settings.py,最下面添加testMiddle类。

Django高级扩展之中间件

请求验证

路由和视图不用更改。

运行项目,请求浏览器并通过控制台查看结果:

 Django高级扩展之中间件

总结

Django中间件实现方式有两种:函数和类实现。

函数方式实现简单一些;类实现方法多一些,可以实现更复杂的应用场景。

参考文章

Django-自定义中间件_django 自定义中间件_Python454的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-495045.html

到了这里,关于Django高级扩展之中间件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • django中的中间件

    在Django中,中间件(Middleware)是一个轻量级的、底层的“插件”系统,用于全局地修改Django的输入或输出。每个中间件组件都负责执行一些特定的任务,比如检查用户是否登录、处理日志、GZIP压缩等。Django的中间件提供了一种方便的方式来处理一些全局的任务,而不需要在

    2024年02月19日
    浏览(38)
  • 关于Django的中间件使用说明。

    中间件的大概解释:在浏览器在请求服务器的时候,首先要经过各种中间件,然后进行GET、POST等请求的访问,然后处理数据,最后经过各种中间件输出给浏览器。 我们可以利用中间件的特性,来解决用户登录过程中的繁琐问题。 在我们用django写后端服务的时候,需要很多

    2024年02月19日
    浏览(32)
  • django校验token自定义中间件

    确保将 ‘path.to.TokenValidationMiddleware’ 替换为你中间件的实际路径。中间件会按照在列表中的顺序顺序执行,所以确保它在其他可能影响请求处理的中间件之前或之后执行,具体取决于你的需求。 这是一个简单的例子,实际上,你可能需要使用更复杂的 Token 校验逻辑,例如使

    2024年01月21日
    浏览(37)
  • 系统架构设计高级技能 · 构件与中间件技术

    点击进入系列文章目录 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 定义1: 软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方

    2024年02月07日
    浏览(52)
  • Tomcat中间件打印请求日志

    修改conf下的 server.xml 文件中的 Valve 配置 主要修改pattern的值 相关pattern的含义可以参考官方文档,这里贴上方便查询 最后打印格式如下 在SpringBoot使用嵌入式Tomcat可以在配置文件中按照如下配置 directory可以配置相对路径或绝对路径,如果是相对路径,那么最终会放在Tomcat的基

    2024年02月07日
    浏览(35)
  • Django笔记二十九之中间件介绍

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十九之中间件介绍 这一节介绍一下 Django 的中间件。 关于中间件,官方文档的解释为:中间件是一个嵌入 Django 系统的 request 和 response 的钩子框架,是一个能够全局改变 Django 输入/输出的系统。 我们可以这样理解,一个

    2023年04月23日
    浏览(42)
  • Python web实战之细说Django的中间件

                      🔑 :Python Web 开发、Django、中间件 今天分享Python Web开发中的一个重要成员:Django的中间件。介绍中间件的概念、作用及其在实战中的应用。 在Python Web开发中,中间件(Middleware)是指位于Web应用程序和Web服务器之间的一层软件组件。它能够拦截请

    2024年02月13日
    浏览(31)
  • 由浅入深:Django中间件原理及编程步骤

    什么是 Django 中的中间件? 中间件如何工作? 中间件有哪些类型? 如何在 Django 中编写自定义中间件? 1.1 什么是 Django 的中间件?** 通俗地说👨 ,中间件是充当程序或系统两个部分之间的桥梁,使它们之间的通信成为可能。在技术术语👨 💻中,中间件是Django的请求/响应

    2024年02月16日
    浏览(29)
  • 【Node.js从基础到高级运用】十三、NodeJS中间件高级应用

    在现代web开发中,Node.js因其高效和灵活性而备受青睐。其中,中间件的概念是构建高效Node.js应用的关键。在这篇博客文章中,我们将深入探讨Node.js中间件的高级应用,包括创建自定义中间件、使用第三方中间件等。我们将从基础讲起,逐步深入,旨在为读者提供全面而深入

    2024年03月22日
    浏览(84)
  • 中间件系列 - Redis入门到实战(高级篇-多级缓存)

    学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 JVM进程缓存 Lua语法入门 实现多级缓存 缓存同步策略 传统的缓存策略

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包