加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django--中间件

发布时间:2020-12-20 10:37:52 所属栏目:Python 来源:网络整理
导读:Django中间件 Django默认由七个中间件? ? ? ? WSGI、wsgiref、uwsgi的区别 WSGI是协议 wsgiref和uwsgi是实现该协议的模块 ? Django默认有七个中间件,但是Django暴露给用户可以自定义中间件,并且里面可以写五种方法 ps: 1、在Django中请求来的时候会依次执

Django中间件

  Django默认由七个中间件?

  

?

?

?

  WSGI、wsgiref、uwsgi的区别

    WSGI是协议

    wsgiref和uwsgi是实现该协议的模块

?

Django默认有七个中间件,但是Django暴露给用户可以自定义中间件,并且里面可以写五种方法

ps:

  1、在Django中请求来的时候会依次执行每一个中间件里面的process_request方法(如果没有直接通过)

  2、响应走的时候会依次执行每一个中间件里面的process_response方法(如果没有直接通过)

?

?

Django中自定义中间件

  1、在app中新建一个任意名字的文件夹,里面新建一个任意名字的py文件

  2、在文件中创建一个类,然后在类中写process_request方法以及process_response方法(切记不要打错)

  3、然后在setting中的中间件中将这个类添加进去

?

Django中间件中的五个方法:  

  • process_request(self,request)
  • process_view(self,request,view_func,view_args,view_kwargs)
  • process_template_response(self,response)
  • process_exception(self,exception)
  • process_response(self,response)

以上方法的返回值可以是None或一个HttpResponse对象,如果是None,则继续按照Django定义的规则向后继续执行,如果是HttpResponse对象,则直接将该对象返回给用户  

?

?

 如果process_request中返回了Httpresponse对象,那么会立即返回,不会继续执行其他的中间件

?

 如果process_request方法中返回了httpresponse对象,那么会走同级别的process_response方法,依次往回走

?

?

Django请求生命周期

?

?

Django中间件能够帮我们实现网站全局的身份验证,黑名单,白名单,访问频率的限制,反爬相关的内容  ? ? ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读