[Django学习]中间件
2024-08-25 07:25:25
中间件
- 是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出
- 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中
- 每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个
- _init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件
- process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
- process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
- process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象
- process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象
- process_exception(request, exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象
- 使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法
- 示例:自定义异常处理
- 与settings.py同级目录下创建myexception.py文件,定义类MyException,实现process_exception方法
class MyException(MiddlewareMixin):
def process_exception(self, request, exception):
return HttpResponse(exception.message)
- 将类MyException注册到settings.py中间件中
MIDDLEWARE_CLASSES = (
'test1.myexception.MyException',
...
)
- 定义视图,并发生一个异常信息,则会运行自定义的异常处理
注:django 1.10之后产生了较大变化
参考:https://www.cnblogs.com/zhaof/p/6281541.html
views函数里面想用print在控制台下打印中文信息,乱码问题:
因为Django默认是utf-8,系统不定。
type = sys.getfilesystemencoding()
print("中间件1请求".decode('utf-8').encode(type))
最新文章
- Linux一些零碎
- idea配置。
- JS中style属性
- 五、Pillar数据管理中心
- Sublime Text3注册码
- mysql 索引优化
- Linux(SLES)挂载NTFS移动硬盘实践
- Pythonic到底是什么玩意儿?
- SQL数据库注入防范 ASP.NET Globle警告
- S3C2440 时钟设置分析(FCLK, HCLK, PCLK)
- Ubuntu 16.04.3 安装jenkins
- eclipse创建的maven项目,pom.xml文件报错解决方法
- js中循环对比(for循环,foreach,for in,for of ,map)
- Java类中代码的执行顺序 静态代码块>;构造代码块>;构造方法
- centos7.5配置双网卡上网
- [NOIp2016]蚯蚓 (队列)
- day1 Ubuntu 使用
- Qt中父子widget的事件传递
- 十、一行多个:使用float布局的经典方法 ---接(一)
- zabbix经常报警elasticsearch节点TCP连接数过高问题
热门文章
- SQLite简单介绍
- 【LeetCode】9. Palindrome Number (2 solutions)
- 主流ETL(Extract-Transform-Load)工具选型,Kettle Spoon、Datastage、Powercenter介绍
- .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序
- mvc中Action前HttpPost的作用
- OGG_GoldenGate数据控制进程Manager(案例)
- 《Linux Device Drivers》第十五章 内存映射和DMA——note
- gradle平级项目引用
- libiconv字符集转换库在C#中的使用
- Cocos2d-x 3.0final 终结者系列教程03-源代码文件夹说明