django15:中间件

中间件

开发django项目是,涉及全局相关功能,都可以使用中间件实现。

1.请求时,需要经过中间件,才能到达真正的django后端。

2.响应走的时候,也要经过中间件,才能出去。

 

依次经过里面的中间件进出,django自带7个中间件。

 

必须掌握的:
1. process_request(self,request)a.请求来时,执行每个中间件的requesetb. 执行顺序,配置文件中的注册,由上到下c. 中间件没有request,就跳过,执行下一个中间件d. 如果该方法放回HttpResponse对象,那么请求就不在执行下去,原路返回。process_request方法用于全局相关的条件限制。  2.process_response(self, request, response)  return responsea. response 就是django后端返回的内容,需要return response也可以替换自定义的。       b. 响应走的时候经过每个中间件,从下往上。*django如果中间件request返回,就执行同级的response 返回。flask 也有中间件,但会全部执行。需要了解的:
3.process_view(self, request, view_func, view_args, view_kwargs)路由匹配成功后,视图函数前。4.process_template_response(self,request,response)返回HttpRespone 有render属性时候才触发。5.process_exception(self, request, exception)当视图函数报错的时候自动触发

如何定义中间件

1. 在项目名或应用名下,创建一个任意名称的文件夹

2. 在文件夹内,创建一个任意名称的py文件

3.在py文件内容,需要书写类。(这个类必须继承MiddlewareMixin)

  然后在里面可以自定义5个方法,用几个写几个

4. 将类的路径以字符串形式注册到配置文件夹中才能生效。

class Mymd1(MiddlewareMixin):def process_request(self,request):print('我是第一个自定义中间件里面的process_request方法')# return HttpResponse("我是第一个中间件返回的Httpresponse对象")def process_response(self,request,response):print('我是第一个中间件里面的process_reponse方法')return response  # 就是后端返回给前端浏览器的响应数据def process_view(self,request,view_func,*args,**kwargs):print(view_func,args,kwargs)print('我是第一个中间件里面的process_view')def process_template_response(self,request,response):print('我是第一个中间件里面的process_template_reponse方法')return responsedef process_exception(self,request,exception):print('exception:',exception)print('我是第一个中间件里面的process_exception')

 

 

 

参考:https://www.cnblogs.com/guyouyin123/p/12193772.html

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网算法和产品优化的几个反直觉现象

本文不涉及任何具体的业务和形态,没有公开任何数据和需要保护的技术。互联网产品和算法的优化,是广大程序员和产品经理的主要工作。但想准确衡量线上实验效果,从来都不简单。笔者将这些反直觉现象,总结成三个典型案例予以讨论。然…

SD 胡策 Round 1 T3 彩尾巴猹的二进制数

发现一个区间[L,R]代表的2进制数是3的倍数,当且仅当从L开始的后缀二进制值 - 从R1开始的后缀二进制值 是 3 的倍数 (具体证明因为太简单而被屏蔽)。 于是我们就可以在每个点维护从它开始的后缀二进制数的值,因为在%3同余系下只有3个数,所以我…

django16: csrf跨站请求伪造/CSRF相关装饰器

CSRF 即跨站请求攻击 跨站请求伪造csrf钓鱼网站本质搭建一个跟正常网站一模一样的页面用户在该页面上完成转账功能转账的请求确实是朝着正常网站的服务端提交唯一不同的在于收款账户人不同给用户书写form表单 对方账户的input没有name属性你自己悄悄提前写好了一个具有默认的…

dropbox_Google的新存储定价与Microsoft,Apple和Dropbox相比如何

dropboxGoogle’s subscription storage service has a new name: Google One. Some prices are dropping and customers will also get customer support from an actual human for the first time. Google的订阅存储服务有一个新名称:Google One。 一些价格正在下…

WPF效果第二百零六篇之快速黑白灰效果

一大早就看到群友讨论怎么快速让界面黑白灰效果,这不突然想起来N年前咱简单通过ShaderEffects调节过饱和度、对比度、亮度;今天再次玩耍一下;来看看最终实现的效果:1、核心代码:sampler2D implicitInput : register(s0); float factor : register(c0); float4 main(…

极大似然估计与贝叶斯定理

文章转载自:https://blog.csdn.net/zengxiantao1994/article/details/72787849 极大似然估计-形象解释看这篇文章:https://www.zhihu.com/question/24124998 贝叶斯定理-形象解释看这篇文章:https://www.zhihu.com/question/19725590/answer/…

艾媒:第三方应用商店形成BAT3争霸格局

iiMedia Research(艾媒咨询)近日发布的《2016Q2中国移动应用商店市场监测报告》,报告显示,2016年第二季度,第三方移动应用商店用户增长放缓,用户规模逐渐饱和。同时,随着豌豆荚宣布并入阿里移动事业群,中国…

layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知

layui 启用禁用iPhone/iPad: Not interested in Apple Pay, and tired of seeing notifications about it? You can disable them, but the option is hidden. iPhone / iPad:对Apple Pay不感兴趣,又厌倦了看到有关它的通知? 您可以禁用它们…

数字孪生项目实战,WPF与Unity结合开发之路(一)

数字孪生项目实战,WPF与Unity结合开发之路(一)数字孪生项目实战,WPF与Unity结合开发之路(一)作 者:水娃嗨大家好,我是一名骨灰级的WPF开发者,我叫水娃。这次主要是向大…

idou老师教你学Istio06: 如何用istio实现流量迁移

流量迁移是流量管理的一个重要功能。istio提供的流量管理功能将流量从基础设施扩展中解耦,支持动态请求路由,故障注入、超时重试、熔断和流量迁移等。流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移至另一个版本,如在新旧版本之间进…

用最少的代码,写一个完整MES项目(.NET6+WPF)

工业4.0时代,智能智造MES系统大行其道,然而基于.NET跨平台的罕见!这里有一套《.NET6WPF企业级MES实战》教程,基于.NET6跨平台开发,实现了MES多核心功能,尤其是开发框架完整,非常适合复用。这里分…

django18:auth模块

Auth模块 执行数据库迁移命令后,自动生产多个表。 django_session auth_user 直接访问admin路由,需要输入用户名和密码,就是参考auth_user表 管理员用户才能进入 创建超级用户 createsuperuser from django.contrib import auth1.校验用…

hulu dpp_什么是直播电视的Hulu,它可以代替您的有线电视订阅吗?

hulu dppStreaming cable replacements are becoming a much more appealing option for cable cutters across the board, with more choices available than ever before. Hulu’s Live TV option is a relative newcomer to the scene, but is it worth it? 对于全系列的电…

suse linux ssh远程无法访问问题

当正常安装完Suse Linux Enterprise Server 11 sp1 时,无法通过SecureCRT或者PuTTY之类的终端程序进行连接。 折腾了一下,发现问题所在: 1、 需要关闭防火墙,如下图在YAST里可以关闭,也可以使用下面命令行的方式&…

Jade —— 源于 Node.js 的 HTML 模板引擎

2013-12-11 发布Jade —— 源于 Node.js 的 HTML 模板引擎 开源项目介绍 web 模板引擎 node.js jade 207.8k 次阅读 读完需要 69 分钟54Jade 是一个高性能的模板引擎,它深受 Haml 影响,它是用 JavaScript 实现的,并且可以供 Node…

诈骗者如何伪造电子邮件地址,以及如何分辨

Consider this a public service announcement: Scammers can forge email addresses. Your email program may say a message is from a certain email address, but it may be from another address entirely. 考虑这是一项公共服务公告:诈骗者可以伪造电子邮件地…

如何对整个 WPF 应用程序进行灰度

如何对整个 WPF 应用程序进行灰度控件名:GrayscaleEffect作 者:WPFDevelopersOrg - 驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers 简易源码[2]框架使用.NET40;Visual Studio 2019;如果要实现灰度第一反是…

django19:项目开发流程

参考:https://www.bilibili.com/video/BV1QE41147hU?p831&spm_id_frompageDriver

React Native - FlexBox弹性盒模型

FlexBox布局 1. 什么是FlexBox布局? 弹性盒模型(The Flexible Box Module),又叫FlexBox,意为"弹性布局",旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同屏幕,为盒模型提供最大的灵活性.   Flex布局主要思想是: 让容器有能力让其子项目能够改变其…

java虚拟机读写其他进程的数据

在java中,process类提供了如下3个方法,用于让程序和其他子进程进行通信。 InputStream getErrorStream():获取子进程的错误流。 InputStream getInputStream():获取子进程的输入流。…