浅谈flask中的before_request与after_request

作者:kwsy2008 时间:2021-05-10 01:29:11 

本文主要是对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来完成。

来源:http://blog.csdn.net/kwsy2008/article/details/53005264

标签:flask,before,request
0
投稿

猜你喜欢

  • face_recognition库在python的安装

    2021-06-16 02:29:27
  • 用Python复现二战德军enigma密码机

    2022-04-12 23:22:59
  • asp检测是否为中文字符函数

    2011-04-07 11:19:00
  • python快速查找算法应用实例

    2021-04-17 10:28:13
  • Python selenium模拟网页点击爬虫交管12123违章数据

    2023-09-26 18:30:37
  • 详解phpMyAdmin的安装和配置

    2007-06-15 09:56:00
  • PHP 进程锁定问题分析研究

    2023-11-21 18:14:10
  • 精细分析 SQL server服务器的内存配置

    2009-01-19 13:56:00
  • 浅析ASP内置组件

    2007-10-18 11:31:00
  • JS中ESModule和commonjs介绍及使用区别

    2023-10-20 22:23:51
  • python 中的 asyncio 异步协程

    2022-09-15 12:30:53
  • asp当中判断函数一览

    2010-05-27 12:15:00
  • 详解Python 中的容器 collections

    2021-09-12 07:11:38
  • 解决图片撑大问题

    2009-09-22 14:51:00
  • Python之进行URL编码案例讲解

    2023-03-31 03:46:58
  • Oracle与SQL Server数据库镜像对比

    2009-03-25 14:27:00
  • Python制作简易版小工具之计算天数的实现思路

    2023-10-29 08:12:07
  • 利用python清除移动硬盘中的临时文件

    2022-12-07 21:43:11
  • Python关键字及可变参数*args,**kw原理解析

    2023-08-25 06:41:47
  • 对Python3中dict.keys()转换成list类型的方法详解

    2021-02-13 12:18:26
  • asp之家 网络编程 m.aspxhome.com