浅谈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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
Python文件和目录操作详解
Feb 08 Python
Django中的Model操作表的实现
Jul 24 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
python pandas模块基础学习详解
Jul 03 Python
Python安装selenium包详细过程
Jul 23 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
浅析python连接数据库的重要事项
Feb 22 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 Python
python实现学员管理系统(面向对象版)
Jun 05 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
python实现Decorator模式实例代码
2018/02/09 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
用pycharm开发django项目示例代码
2018/10/24 Python
基于python调用psutil模块过程解析
2019/12/20 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Python request中文乱码问题解决方案
2020/09/17 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
荷兰超市:DEEN
2018/03/14 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
行政助理岗位职责范文
2013/12/03 职场文书
士力架广告词
2014/03/20 职场文书
煤矿安全承诺书
2014/05/22 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
python中取整数的几种方法
2021/11/07 Python
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android