浅谈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爬虫之打包生成exe文件
Nov 06 Python
python使用pil生成缩略图的方法
Mar 26 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python实现的字典值比较功能示例
Jan 08 Python
使用python 爬虫抓站的一些技巧总结
Jan 10 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
Flask框架路由和视图用法实例分析
Nov 07 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 Python
关于python 跨域处理方式详解
Mar 28 Python
Python MNIST手写体识别详解与试练
Nov 07 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中神奇的fastcgi_finish_request
2011/05/02 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php动态函数调用方法
2015/05/21 PHP
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
python实现中文输出的两种方法
2015/05/09 Python
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
简单实现Python爬取网络图片
2018/04/01 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Python os库常用操作代码汇总
2020/11/03 Python
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
求职简历自荐信
2013/10/20 职场文书
十八大闭幕感言
2014/01/22 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
普通党员对照检查材料
2014/09/24 职场文书
会议主持词结束语
2015/07/03 职场文书
医院病假条范文
2015/08/17 职场文书