Django 中间件 请求前
中间件:
class TestMiddleware(object):
"""中间件类"""
def __init__(self):
"""服务器重启之后,接收第一个请求时调用"""
pass def process_request(self, request):
"""产生request对象之后,url匹配之前调用"""
pass def process_view(self, request, view_func, *view_args, **view_kwargs):
"""url匹配之后,视图函数调用之前调用"""
pass def process_exception(self, request, exception):
"""视图函数发生异常时调用"""
pass def process_response(self, request, response):
"""视图函数调用之后,内容返回浏览器之前调用"""
return response
正常调用顺序是从上往下,但如注册了多个中间件类中包含 process_exception函数的时候,process_exception函数调用的顺序跟注册的顺序是相反的,下面两张图说明:


流程图:

注意:process_response之前的中间件如无返回,则默认返回 None,会继续执行下一个中间件,但如有返回,则直接跳到 process_response中间件
例子:
1.
在app内新建一个 middleware.py 文件
2.
from django.http import HttpResponse class BlacklistIPSMiddleware(object):
"""中间件类"""
EXCLUDE_IPS = ['192.168.1.1'] def process_view(self, request, view_func, *view_args, **view_kwargs):
"""视图函数调用之前会调用"""
user_ip = request.META['REMOTE_ADDR'] # 获取访问用户的IP
if user_ip in BlacklistIPSMiddleware.EXCLUDE_IPS:
return HttpResponse('您在黑名单中')
3.
在settings配置文件中注册中间件类
# 'app名.中间件文件名.中间件类名'
MIDDLEWARE_CLASSES = (...,
...,
‘book.middleware.BlacklistIPSMiddleware’)
Django 中间件 请求前的更多相关文章
- Flask - 请求扩展,钩子函数(Django的中间件) --> 请求前,中,后,
例子1. 处理请求之前 @app.before_request 在请求之前,这个被装饰的函数会被执行 用户登录验证代码可以在这里写 @app.before_request def process_re ...
- 使用django 中间件在所有请求前执行功能
django中间是一个轻级,低耦合的插件,用来改变全局的输入和输出. 一 如何使用中间件 定义中间件 注册中间件 # 这是一个中间件代码片段的说明,在各个位置的代码将在何时执行 def simple_ ...
- Django中间件如何处理请求
Django中间件 在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法. Django1.9版本以后中间件的执行流程 1. ...
- Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09
目录 昨日补充:将自己写的 login_auth 装饰装在 CBV 上 django 中间件 django 请求生命周期 ***** 默认中间件及其大概方法组成 中间件的执行顺序 自定义中间件探究不同 ...
- csrf跨站请求伪造、csrf相关装饰器、auth认证模块、基于django中间件设计项目功能
目录 csrf跨站请求网站 什么是csrf跨站请求网站 经典例子-钓鱼网站 模拟 如何避免这种现象(预防) 如何在django中解决这个问题 form表单 ajax csrf相关装饰器 FBV CBV ...
- [oldboy-django][2深入django]django一个请求的生命周期 + WSGI + 中间件
1 WSGI # WSGI(是一套协议,很多东西比如wsgiref, uwsgiref遵循这一套协议) - django系统本质 别人的socket(wsgiref或者uwsgiref) + djan ...
- Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)
摘要 Django中间件 csrf跨站请求伪造 一.Django中间件: 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于 ...
- Web框架之Django重要组件(Django中间件、csrf跨站请求伪造)
Web框架之Django_09 重要组件(Django中间件.csrf跨站请求伪造) 摘要 Django中间件 csrf跨站请求伪造 一.Django中间件: 什么是中间件? 官方的说法:中间件是 ...
- django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块
CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...
随机推荐
- FormatMessage
FormatMessage 获取GetLastError 函数返回的错误代码对应的字符串描述. #include <Windows.h>#include <tchar.h> V ...
- Java入门系列 泛型
前言 <Java编程思想>第四版足足用了75页来讲泛型——厚厚的一沓内容,很容易让人头大——但其实根本不用这么多,只需要一句话:我是一个泛型队列,狗可以站进来,猫也可以站进来,但最好不要既 ...
- MobX响应式编程库
MobX https://mobx.js.org/ https://github.com/mobxjs/mobx MobX is a battle tested library that makes ...
- springboot-01 helloworld
第一个springboot程序 新建maven项目,添加如下依赖: <?xml version="1.0" encoding="UTF-8"?> & ...
- Ubuntu18.04下Python Web环境搭建
Python3的安装与卸载 pip, pip3的安装 Django2.x的安装 mysql的安装及命令行工具mycli的安装 virtualenv及virtualenvwrapper的安装 IPyth ...
- steps/train_lda_mllt.sh
LDA+MLLT指的是在计算MFCC后对特征进行的变换:首先对特征进行扩帧,使用LDA降维(默认降低到40),然后经过多次迭代轮数估计一个对角变换(又称为MLLT或CTC) .详见 http://ka ...
- 事件对象event
每个事件都有默认事件event对象 e.target 事件目标对象 e.keycode 键码 e.stopPropogation();//阻止默认事件
- Git——如何将本地项目提交至远程仓库
参考文章:http://blog.csdn.net/dadaxiongdebaobao/article/details/52081826 git 将一个本地文件目录提交到远程仓库的步骤 参考文章: ...
- Spring4之IOC
或第六讲前也是讲此知识. \[www.dev1234.com]一头扎进Spring4视频教程\一头扎进Spring4源码\[www.java1234.com]<一头扎进Spring4>第六 ...
- EL表达式 EL函数 自定义el函数 《黑马程序员_超全面的JavaWeb视频教程vedio》
\JavaWeb视频教程_day12_自定义标签JSTL标签库,java web之设计模式\day12_avi\12.EL入门.avi; EL表达式 1. EL是JSP内置的表达式语言! * jsp2 ...