浅谈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的函数嵌套的使用方法
Jan 24 Python
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
跟老齐学Python之一个免费的实验室
Sep 14 Python
Python Paramiko模块的使用实际案例
Feb 01 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
Python学习小技巧总结
Jun 10 Python
python装饰器常见使用方法分析
Jun 26 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
python中class的定义及使用教程
Sep 18 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
详解python 内存优化
Aug 17 Python
python在package下继续嵌套一个package
Apr 14 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
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
今天是星期几的4种JS代码写法
2013/09/17 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python Pillow图像处理方法汇总
2019/10/16 Python
python爬虫请求头的使用
2020/12/01 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
JavaScript中reduce()的用法
2022/05/11 Javascript