关于django中间件的知识
2014-08-13 11:45
393 查看
这两天在看django中间件的一些知识。深有感触。
以前用Python写的一个的装饰器用来做权限管理,在没看中间件的知识之前,用起来还不错,看来以后,觉得还是MiddleWare强大(只限于本应用场景),不用在每一个函数钱用装饰器进行限制,只需写好一段中间件函数,它会自动在request前进行执行,进行全局控制。
中间件的安装:在setting中,
按照官网的讲解,CacheMiddleWare必须在SessionMiddleware和AuthenticationMiddleware之下。红字之处的意思是将自己定制的中间件添加到项目中
下面介绍关于Request预处理函数:这个方法的调用时机是在Django接收到request之后,但仍未解析URL以确定应当运行的view之前。
process_request() 应当返回 None 或 HttpResponse 对象.
如果返回 None , Django将继续处理这个request,执行后续的中间件, 然后调用相应的view.
如果返回 HttpResponse 对象, Django 将不再执行 任何 其它的中间件(而无视其种类)以及相应的view。 Django将立即返回该 HttpResponse .
此外,还有其他几种处理函数:
View预处理函数:process_view(self,request,view,args,kwargs),这个方法的调用时机在Django执行完request预处理函数并确定待执行的view之后,但在view函数实际执行之前。
Response后处理函数:process_response(self,request,response),这个方法的调用时机再Django执行view函数并生成response之后。
Exception后处理函数process_exception(self,request,exception),在request处理过程中出了点问题并且view函数抛出了一个未捕获的异常时才会被调用
在将自己编写的中间件函数写好以后,就能使用了。
以前用Python写的一个的装饰器用来做权限管理,在没看中间件的知识之前,用起来还不错,看来以后,觉得还是MiddleWare强大(只限于本应用场景),不用在每一个函数钱用装饰器进行限制,只需写好一段中间件函数,它会自动在request前进行执行,进行全局控制。
中间件的安装:在setting中,
MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.cache.CacheMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', <span style="color:#ff0000;">'myapp.MyMiddleWare.TestMiddleware'</span> )
按照官网的讲解,CacheMiddleWare必须在SessionMiddleware和AuthenticationMiddleware之下。红字之处的意思是将自己定制的中间件添加到项目中
下面介绍关于Request预处理函数:这个方法的调用时机是在Django接收到request之后,但仍未解析URL以确定应当运行的view之前。
process_request(self, request) : ........
process_request() 应当返回 None 或 HttpResponse 对象.
如果返回 None , Django将继续处理这个request,执行后续的中间件, 然后调用相应的view.
如果返回 HttpResponse 对象, Django 将不再执行 任何 其它的中间件(而无视其种类)以及相应的view。 Django将立即返回该 HttpResponse .
此外,还有其他几种处理函数:
View预处理函数:process_view(self,request,view,args,kwargs),这个方法的调用时机在Django执行完request预处理函数并确定待执行的view之后,但在view函数实际执行之前。
Response后处理函数:process_response(self,request,response),这个方法的调用时机再Django执行view函数并生成response之后。
Exception后处理函数process_exception(self,request,exception),在request处理过程中出了点问题并且view函数抛出了一个未捕获的异常时才会被调用
在将自己编写的中间件函数写好以后,就能使用了。
相关文章推荐
- 关于Django中间件自己的一点理解
- 关于Django的配置思路以及涉及到的知识
- 关于Python与Django的一些背景知识
- [Django入门知识浅介]关于Python与Django的一些背景知识
- 关于DataGrid的知识和技巧
- 关于Java编程的一些小知识
- 关于句柄的基础知识
- 又长知识了~~关于DDR内存的经历!
- 关于OPC(Ole for process control)服务器开发需要的知识
- >>关于.NET CF 的一些知识——启动同一个程序的多个拷贝
- 关于继承和覆盖(Override)的一些基础知识
- 关于C++准备知识
- 关于jxl的一点知识
- 作为一个程序员,有些知识你应该知道----关于并发和数据库封锁
- 关于SQL SERVER 2000的一些基本知识(2)——SQL SERVER 2000日期处理
- 关于 XML 的一些基础知识
- GeoGraphics文档中关于坐标系统的一些知识
- 关于知识管理系统和信息管理系统的区别
- 关于字符集的一些知识
- 关于SQL SERVER 2000的一些基本知识(1)——简单的SQL语句