django七大中间件的作用,django中间件的运行机制

  django七大中间件的作用,django中间件的运行机制

  它是Django用来处理请求和响应的钩子框架。它是一个轻量级的底层“插件”系统,用于全局控制Django的输入或输出。可以理解为内置app或者小框架。

  模块django.core.handlers.base定义了如何访问中间件,这也是学习django源代码的门户之一。

  每个中间件组件负责实现一些特定的功能。例如,Django包含一个中间件组件AuthenticationMiddleware,它使用会话机制将用户与请求相关联。

  中间件可以放在项目中的任何地方,并通过Python path访问。

  Django有一些内置的中间件,自动打开其中的一些。我们可以根据自己的需要进行调整。

  一、如何启用中间件

  要启用中间件组件,请将其添加到Django配置文件settings.py中的中间件配置项列表中

  在中间件中,中间件由字符串表示。这个字符串由点分隔,指向中间件工厂的类名或函数名的完整Python路径。以下是使用django-admin startproject命令创建项目后的默认中间件配置:

  中间件=[

   django . middleware . security . security middleware ,

   django . contrib . sessions . middleware . session middleware ,

   django . middleware.common.common middleware ,

   django . middleware . csrf . csrfviewmiddleware ,

   django . contrib . auth . middleware . authenticationmiddleware ,

   django . contrib . messages . middleware . message middleware ,

   django . middleware . click jacking . xframeoptions middleware ,

  实际上,在Django中你不能使用任何中间件。如果您愿意,中间件配置项可以为空。但是,强烈建议至少使用CommonMiddleware。作者的建议是保持默认配置,这样有助于你提高网站的安全性。

  二、 中间件最关键的顺序问题

  中间件的顺序非常重要,因为有些中间件会依赖于其他中间件。例如,AuthenticationMiddleware需要存储在SessionMiddleware中的经过身份验证的用户信息,因此它必须运行在会话中间件的后面。

  在请求阶段,在调用视图之前,Django按照定义的顺序从上到下执行中间件。

  你可以把它想象成一个洋葱:每个中间件类都是一个“皮肤”,包裹着洋葱的核心——实际的业务视图。如果请求通过洋葱的所有中间件层,一直到内核视图,那么响应将在返回过程中以相反的顺序通过每个中间件层,最后返回给用户。

  如果某一层的执行进程认为应该拒绝当前的请求,或者发生了某种错误,导致短路,直接返回响应,那么剩下的中间件和核心视图函数就不会执行。

  三、Django内置的中间件

  Django内置了以下中间件来满足我们的一般需求:

  躲藏

  缓存中间件

  如果启用中间件,Django将以CACHE_MIDDLEWARE_SECONDS配置的参数进行全站级缓存。

  普通

  通用中间件

  中间件为我们提供了一些方便的功能:

  禁止DISALLOWED_USER_AGENTS中的用户代理访问服务器。

  自动添加斜杠后缀和www前缀到URL。如果配置项APPEND_SLASH为真,且被访问的url没有斜杠后缀,且URLconf中没有匹配成功,则自动添加斜杠,然后再次匹配。如果匹配成功,就会跳转到相应的网址。PREPEND_WWW的功能类似。

  为非流式响应设置Content-Length标头。

  信息。

  作为展示的例子,这里额外贴出它的源代码,位于django.middleware.common模块中,比较简单,很容易读懂和理解:

  

classCommonMiddleware(MiddlewareMixin):

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: