美文网首页我爱编程Web 前端开发
flask 中的before_request 与 after_r

flask 中的before_request 与 after_r

作者: 是归人不是过客 | 来源:发表于2018-08-10 16:53 被阅读0次

1,使用方式

使用before_request 和 after_request的方法都非常简单,使用 @app.before_request  或者@app.after_request  修饰期望在请求前或请求后执行的函数即可

2,before_request

before_request()函数被修饰以后,每一次请求到来后,都会先执行它,如果没问题即没有执行到abort(400),那么就会进入到正常的被app.route修饰的函数中进行响应,如果有多个函数被app.before_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装饰器有什么用,其实它的用处非常大,比如我们希望能对ip地址进行过滤,虽然你可以使用nginx,但我们也可以使用before_request来做,使用nginx,我们不得不手动的进行设置,但如果是用flask自身的before_request机制,我们可以在程序判断出某个ip有恶意访问行为后将其加入到缓存当中(redis),每次请求到来时,由before_request来判断这个ip是不是合法的。

3,after_request

被app.after_request修饰过的函数会在请求得到相应后返回给用户前被调用,也就是说,这个时候,请求已经被app.route装饰的函数响应过了,已经形成了response,我们在这个时候做一些操作,flask有一个插件叫 flask-compress,是对响应结果进行压缩的,它就是用after_request的这个机制,在response返回前对数据进行了压缩,如果你有别的想要操作的事情,同样可以使用after_request来完成。

相关文章

  • flask 中的before_request 与 after_r

    1,使用方式 使用before_request 和 after_request的方法都非常简单,使用@app.be...

  • before_request钩子函数

    钩子函数 before_request before_request:在请求之前执行的 before_reques...

  • 3天学会主流框架Flask(2)

    9.闪现(message) 示例: 10.请求扩展 1 before_request 类比django中间件中的p...

  • 2018-07-04

    Flask的使用 Flask是一个Python Web框架。与Django相比,Flask更为轻量化。(Flask...

  • Flask-Moment 时间戳渲染

    Web程序使用Flask-Moment显示本地化日期与时间 在hello.py中初始化Flask-Moment 在...

  • Flask框架——Session与Cookie

    在上篇文章中,我们学习了Flask框架——模型关系(多对多关系),这篇文章我们学习Flask框架——Cookie与...

  • Flask 常用库整理

    flask-script 为 Flask 提供强大的命令行操作,与 Django shell 类似。 Flask-...

  • 源码

    请求钩子before_request after_request errorhandler 装饰器route sl...

  • Vue与Flask的关联

    上一节在Flask目录下,新建了前端Vue项目。这节是Vue与Flask的关联。 Vue中的设置 编译完成后,我们...

  • 利用pycharm学习flask(四)

    本文主要内容: 1.flask扩展2.如何在pycharm中安装flask扩展 1.flask扩展 flask虽然...

网友评论

    本文标题:flask 中的before_request 与 after_r

    本文链接:https://www.haomeiwen.com/subject/glxlbftx.html