浅谈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检测QQ在线状态的方法
May 09 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
Python设计模式之抽象工厂模式
Aug 25 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
Python读取文件夹下的所有文件实例代码
Apr 02 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中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
python清除字符串前后空格函数的方法
2018/10/21 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
三严三实民主生活会发言稿
2014/10/13 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
体育教师个人总结
2015/02/09 职场文书
领导欢送会主持词
2015/07/06 职场文书
2015年暑假生活总结
2015/07/13 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
护理心得体会范文
2016/01/22 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python