Middleware也就是所谓的中间件
Django的“中间件”的这个“中间”指的是 服务器接受到Request ----> View处理,以及View处理完 ----> 发送Response到客户端 这两个“中间”。
所以用过Java进行过Web编程的可能会发现,这个Django的中间件和Filter有几分相似,其实它更像Spring MVC中的拦截器。
那么如何写一个Django的中间件呢?
1.中间件只是实现了某些特定方法的普通对象
所以定义一个中间件很容易
你只需要定义一个普通的python类,然后实现如下四个方法中的某一个或者某几个
process_request(self, request)
process_view(self, request, view_func, view_args, view_kwargs)
process_response(self, request, response)
process_exception(self, request, exception)
各个函数执行的时机
process_request 接受request之后确定所执行的view之前
process_view 确定了所要执行的view之后 view真正执行之前
process_response view 执行之后
process_exception(self, request, exception) view抛出异常
2.安装中间件
通过django-admin生成的项目的setting.py的配置文件中默认有如下设置,
如果你需要添加自己的中间件,你需要在这个地方进行指定。
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
这里指定的顺序和实际运行时运行的顺序相关,
在request阶段:process_request,process_view 按照其所在类在配置中的先后顺序进行,
在response阶段:process_response,process_exception 则按照相反的顺序进行。
还有一点就是在整个流程中,每一个process_response都会执行到,
而其余三种,都可能会因为其他的直接retuen response或者不发生异常而不被执行到。
- 大小: 55 KB
分享到:
相关推荐
资源来自pypi官网。 资源全名:opencensus-ext-django-middleware-0.1.4.tar.gz
1、将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项目中会自带的。 MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django....
资源来自pypi官网。 资源全名:raygun_django_middleware-1.0.8-py2.py3-none-any.whl
资源分类:Python库 所属语言:Python 资源全名:optic_django_middleware-0.1.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
django下全局request对象 的获取,这种方式不会存在多线程下获取request用户信息错误的问题
中间件介绍 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。... 'django.middleware.security.SecurityMiddleware', 'django.contrib
主要介绍了Django中Middleware中的函数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了Django框架之中间件MiddleWare的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
'django.middleware.gzip.GZipMiddleware', 'johnny.middleware.LocalStoreClearMiddleware', 用突破破坏者的代替django的GzipMiddleware。 MIDDLEWARE_CLASSES = ( 'breach_buster.middleware.gzip....
主要给大家介绍了关于Django中的中间件middleware的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
主要介绍了Django框架中间件(Middleware)用法,结合实例形式分析了Django框架中间件(Middleware)的功能、用法及相关操作技巧,需要的朋友可以参考下
使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。 django CalDAV 服务 此分支为将radicale改造为基于django INSTALLED_APPS加入 'radicale', url加入 url(r'^(?P<path>.*)$', ...
Django中间件计算相同IP的请求数量如果大于一定次数,它将拒绝访问
安装安装 django-pjax-middleware 使用pip安装: pip install git+https://github.com/bbrik/django-pjax-middleware.git将PjaxMiddleware添加到PjaxMiddleware中的MIDDLEWARE_CLASSES中: MIDDLEWARE_CLASSES = ( ....
django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成。而对于django中设置防跨站请求伪造功能有分为全局和局部。 全局: 中间件 django.middleware.csrf....