浅谈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中encode()方法的使用简介
May 18 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
python 猴子补丁(monkey patch)
Jun 26 Python
基于python实现可视化生成二维码工具
Jul 08 Python
Python面向对象实现方法总结
Aug 12 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
python如何快速拼接字符串
Oct 28 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
Python机器学习之KNN近邻算法
May 14 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
使用Django框架创建项目
Jun 10 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如何得到当前页和上一页的地址?
2006/11/27 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
Python并行分布式框架Celery详解
2018/10/15 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
python3实现单目标粒子群算法
2019/11/14 Python
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
教师研修随笔感言
2014/01/23 职场文书
教师远程培训感言
2014/03/06 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL