Django 中间件 请求前
2019-01-21 02:43:07来源:博客园 阅读 ()
中间件:
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’)
原文链接:https://www.cnblogs.com/Selling-fish-bears/p/10288774.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Django和前端用ajax传输json等数据 2019-08-13
- python爬虫常用库 2019-08-13
- Django基本知识 2019-08-13
- JavaScript获取Django模板中指定键值的数据,使用过滤器 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash