中间件

  • 是一个轻量级、底层的插件系统,可以介入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))

最新文章

  1. Linux一些零碎
  2. idea配置。
  3. JS中style属性
  4. 五、Pillar数据管理中心
  5. Sublime Text3注册码
  6. mysql 索引优化
  7. Linux(SLES)挂载NTFS移动硬盘实践
  8. Pythonic到底是什么玩意儿?
  9. SQL数据库注入防范 ASP.NET Globle警告
  10. S3C2440 时钟设置分析(FCLK, HCLK, PCLK)
  11. Ubuntu 16.04.3 安装jenkins
  12. eclipse创建的maven项目,pom.xml文件报错解决方法
  13. js中循环对比(for循环,foreach,for in,for of ,map)
  14. Java类中代码的执行顺序 静态代码块>构造代码块>构造方法
  15. centos7.5配置双网卡上网
  16. [NOIp2016]蚯蚓 (队列)
  17. day1 Ubuntu 使用
  18. Qt中父子widget的事件传递
  19. 十、一行多个:使用float布局的经典方法 ---接(一)
  20. zabbix经常报警elasticsearch节点TCP连接数过高问题

热门文章

  1. SQLite简单介绍
  2. 【LeetCode】9. Palindrome Number (2 solutions)
  3. 主流ETL(Extract-Transform-Load)工具选型,Kettle Spoon、Datastage、Powercenter介绍
  4. .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序
  5. mvc中Action前HttpPost的作用
  6. OGG_GoldenGate数据控制进程Manager(案例)
  7. 《Linux Device Drivers》第十五章 内存映射和DMA——note
  8. gradle平级项目引用
  9. libiconv字符集转换库在C#中的使用
  10. Cocos2d-x 3.0final 终结者系列教程03-源代码文件夹说明