浅谈flask中的before_request与after_request


Posted in Python onJanuary 20, 2018

本文主要是对flask中的before_request与after_request用法做一个简单的分析,具体实例和介绍如下。

使用before_request 和 after_request的方法都非常简单,使用 @app.before_request 或者@app.after_request 修饰期望在请求前或请求后执行的函数即可

示例:

@app.before_request 
def before_request(): 
  if not m_ip_range.is_ip_strict(): 
    return 
  ranges = m_ip_range.get_range() 
  ip_int = utils.ip_to_int(request.remote_addr) 
  yes = False 
  for item in ranges: 
    if item['is_used']==0: 
      continue 
    if ip_int >= item['ip_start'] and ip_int <= item['ip_end']: 
      yes = True 
      break 
  if not yes: 
    abort(400)

before_request()函数被修饰以后,每一次请求到来后,都会先执行它,如果没问题即没有执行到abort(400),那么就会进入到正常的被app.route修饰的函数中进行响应,如果有多个函数被app.before_request修饰了,那么这些函数会被依次执行。

你很关心这个before_request装饰器有什么用,其实它的用处非常大,比如我们希望能对ip地址进行过滤,虽然你可以使用nginx,但我们也可以使用before_request来做,使用nginx,我们不得不手动的进行设置,但如果是用flask自身的before_request机制,我们可以在程序判断出某个ip有恶意访问行为后将其加入到缓存当中(redis),每次请求到来时,由before_request来判断这个ip是不是合法的。

被app.after_request修饰过的函数会在请求得到相应后返回给用户前被调用,也就是说,这个时候,请求已经被app.route装饰的函数响应过了,已经形成了response,我们在这个时候做一些操作,flask有一个插件叫 flask-compress,是对响应结果进行压缩的,它就是用after_request的这个机制,在response返回前对数据进行了压缩,如果你有别的想要操作的事情,同样可以使用after_request来完成。

总结

以上就是本文关于浅谈flask中的before_request与after_request的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
约瑟夫问题的Python和C++求解方法
Aug 20 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
python逆向入门教程
Jan 15 Python
Python实现的redis分布式锁功能示例
May 29 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
python实现人工智能Ai抠图功能
Sep 05 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
python tkinter实现连连看游戏
Nov 16 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 #Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 #Python
Python实现PS滤镜中马赛克效果示例
Jan 20 #Python
浅析python协程相关概念
Jan 20 #Python
Python实现可自定义大小的截屏功能
Jan 20 #Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 #Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 #Python
You might like
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
Python如何读写字节数据
2020/08/05 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
新教师工作感言
2014/02/16 职场文书
党课心得体会范文
2014/09/09 职场文书
2015年中个人总结范文
2015/03/10 职场文书
停电放假通知
2015/04/14 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
创业计划书之校园超市
2019/09/12 职场文书