博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Django学习]中间件
阅读量:6647 次
发布时间:2019-06-25

本文共 1130 字,大约阅读时间需要 3 分钟。

中间件

  • 是一个轻量级、底层的插件系统,可以介入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之后产生了较大变化

参考:

views函数里面想用print在控制台下打印中文信息,乱码问题:

因为Django默认是utf-8,系统不定。

type = sys.getfilesystemencoding() print("中间件1请求".decode('utf-8').encode(type))

转载地址:http://jmuto.baihongyu.com/

你可能感兴趣的文章
Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码问题.
查看>>
记录安装oracle的那些事(二)之双系统安装
查看>>
ssh服务器配置方法
查看>>
Django安装配置
查看>>
bootstrap源码学习与示例:bootstrap-tab
查看>>
[C] 让VC支持C99的整数类型V1.01。避免包含目录问题,更名auto_stdint.h、auto_inttypes.h(在VC6至VC2012、GCC、BCB等编译器下测试通过)...
查看>>
Apache OFBiz 10.04.05 发布,安全漏洞修复
查看>>
京东书4
查看>>
Java EE之RMI
查看>>
ASCII编码表 -- SQL注入 也需要
查看>>
MySQL常用数据类型介绍
查看>>
当装系统时遇到“选中的磁盘采用GPT分区形式”
查看>>
CentOS的远程桌面(xdm)
查看>>
Some aspects to prepare
查看>>
oracle 好书 05 ( 内存组件与 oracle 进程 )
查看>>
Linux gdb符号调试器
查看>>
http_load
查看>>
metasploit tutorial
查看>>
安装 iis 的方式
查看>>
Spring MVC 拦截器问题,如何配置不需要拦截的页面
查看>>