您当前的位置: 首页 >  django

哆啦A梦_i

暂无认证

  • 3浏览

    0关注

    629博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Django:(默认自带)中间件 的介绍与作用

哆啦A梦_i 发布时间:2021-04-21 21:22:57 ,浏览量:3

1. Django默认自带中间件

中间件本质上是一个 Python 类,类里定义了一些函数,这些函数在视图函数执行的前后调用,它们被形象的称之为“钩子函数”。Django 不仅向我们提供了丰富的中间件,而且也可以使用 Django 的中间件接口来实现自定义中间件。

下面就是创建 Django 项目后,默认生成的中间件,配置在 settings.py 文件中。

  1. MIDDLEWARE = [
  2. 'django.middleware.security.SecurityMiddleware',
  3. 'django.contrib.sessions.middleware.SessionMiddleware',
  4. 'django.middleware.common.CommonMiddleware',
  5. 'django.middleware.csrf.CsrfViewMiddleware',
  6. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  7. 'django.contrib.messages.middleware.MessageMiddleware',
  8. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  9. ]

1)中间的执行与响应顺序

项目创建后,所有中间件都是默认激活的状态。当然你可以通过代码注释,将某个中间件关闭,这需要您根据具体的业务需求来操作 。Django 同时规定了中间件的执行顺序与配置关系,按照如上列表,从上至下行依次执行每一个中间件,但是返回响应结果的时候,整好相反,是从下至上。 如图所示,从浏览器发出一个请求 Request,最后得到一个 HttpResponse 响应 ,这个请求传递与响应返回的过程如下图所示:

中间件执行与响应示意图 图1:中间的执行与响应顺序  

中间件作为一个可插拔的组件对外提供服务,每个中间件都负责完成一些特定的功能。例如,Django 包含一个中间件 “AuthenticationMiddleware”,它的作用是将会话和用户请求进行关联。 中间件定义的钩子函数,是在视图函数执行的前后调用的,它们的执行过程如下所示:

1)在调用视图之前

如图1所示,在请求阶段,Django 按照自定义的顺序自上而下地应用中间件。这个过程执行两个钩子函数 process_request() 和 process_view(),它们都是在视图函数执行前调用的。

2)在调用视图之后

如图1所示,在响应阶段,中间件从下往上返回 HttpResponse,这个过程有三个挂钩函数可供选择:

  • process_exception() (只有当视图引发异常时调用);
  • process_template_response() (仅适用于模板响应);
  • process_response()。
2. 中间件的作用总结

那我们可以总结一下,中间件是介于 request 与 response 之间的一道处理过程,相对比较轻量级。我们可以通过中间件来修改请求,例如,被传送到视图函数中的 HttpRequest 对象,也可以修改视图函数返回的 HttpResponse 对象。 对于请求与响应的顺序总结如下:

请求发出自上而下,响应返回自下而上。

django.middleware.clickjacking.XFrameOptionsMiddleware

我们拿最后一个中间件举例说明,它的 process_request 方法最后一个执行,而它的 process_response 方法却是最先执行。

关注
打赏
1556978864
查看更多评论
立即登录/注册

微信扫码登录

0.0666s