浅谈flask中的before_request与after_request

 更新时间:2018年01月20日 11:37:43   作者:kwsy2008  
这篇文章主要介绍了浅谈flask中的before_request与after_request,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

本文主要是对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的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • Sanic框架应用部署方法详解

    Sanic框架应用部署方法详解

    这篇文章主要介绍了Sanic框架应用部署方法,结合实例形式分析了Sanic框架应用部署的具体流程、相关命令与使用技巧,并附带说明了Gunicorn的配置方法,需要的朋友可以参考下
    2018-07-07
  • Python+opencv 实现图片文字的分割的方法示例

    Python+opencv 实现图片文字的分割的方法示例

    这篇文章主要介绍了Python+opencv 实现图片文字的分割的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python实现的选择排序算法原理与用法实例分析

    Python实现的选择排序算法原理与用法实例分析

    这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋友可以参考下
    2017-11-11
  • python关闭占用端口方式

    python关闭占用端口方式

    今天小编就为大家分享一篇python关闭占用端口方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 浅析Python中字符串的intern机制

    浅析Python中字符串的intern机制

    这篇文章主要介绍了Python中字符串的intern机制,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-10-10
  • python批量读取文件名并写入txt文件中

    python批量读取文件名并写入txt文件中

    这篇文章主要为大家详细介绍了python批量读取文件名并写入txt文件中,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python使用jsonpath-rw模块处理Json对象操作示例

    Python使用jsonpath-rw模块处理Json对象操作示例

    这篇文章主要介绍了Python使用jsonpath-rw模块处理Json对象操作,结合实例形式分析了Python使用requests与response处理json的方法,并给出了jsonpath_rw模块操作json对象的基本示例,需要的朋友可以参考下
    2018-07-07
  • django框架中间件原理与用法详解

    django框架中间件原理与用法详解

    这篇文章主要介绍了django框架中间件原理与用法,结合实例形式详细分析了Django框架常用中间件与基本使用技巧,需要的朋友可以参考下
    2019-12-12
  • 10分钟教你用Python实现微信自动回复功能

    10分钟教你用Python实现微信自动回复功能

    今天,我们就来用Python实现微信的自动回复功能吧,并且把接收到的消息统一发送到文件助手里面,方便统一查看。感兴趣的朋友跟随小编一起看看吧
    2018-11-11
  • 使用VLC实现自动播放视频的操作方法

    使用VLC实现自动播放视频的操作方法

    VLC是一款开源的多媒体播放器,它支持大量的视频和音频格式,并且具有强大的脚本和编程接口,这篇文章主要介绍了使用VLC实现自动播放视频,需要的朋友可以参考下
    2024-03-03

最新评论