码迷,mamicode.com
首页 > 其他好文 > 详细

请求勾子

时间:2020-05-29 10:28:03      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:注册   route   显示   错误码   nbsp   ret   16px   art   页面   

before_request
  
在处理路由规则对应的 view_function 之前执行的函数, 并且执行顺序是先绑定先执行, 并且先执行 flask app 的 before_request, 再处理 blueprint 的 before_request。



示例:
from flask import Flask, request

app = Flask(__name__)

@app.route("/fromuser/<name>")
def user(name):
    return "<h1> Hello, {} !</h1>".format(name)

@app.before_request
def before_exec():
    print("Start...")
    
if __name__ == ‘__main__‘:
    app.run()

结果:
请求地址: http://127.0.0.1:5000/fromuser/liming
先后台打印Start.., 然后页面返回请求

  

  errorhandler: 被触发的前提是 view_function 中抛出了错误, 并且错误码能够匹配上注册的 errorhandler 的错误码.

示例:

from flask import Flask, request, render_template, abort

app = Flask(__name__)

@app.route("/fromuser/<name>")
def user(name):
    if name == ‘liming‘:
        abort(404)  #  1、返回404错误码
    return "<h1> Hello, {} !</h1>".format(name)

@app.before_request
def before_exec():
    print("Start...")

@app.after_request
def after_exec(response):  # 此处必须有参数
    print("i am ok...")
    return response

@app.errorhandler(404)  # 2、接收404错误码,执行err_exec
def err_exec(response):
    print("ERR")


if __name__ == ‘__main__‘:
    app.run()

  

  after_request

     被触发的前提是没有异常抛出; 或者异常被 errorhandler 接住并处理. 并且 after_request 执行的顺序是先绑定后执行.

示例

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route("/fromuser/<name>")
def user(name):
    return "<h1> Hello, {} !</h1>".format(name)

@app.before_request
def before_exec():
    print("Start...")

@app.after_request
def after_exec(response):  # 函数必须有参数
    print("i am ok...")
    return response

if __name__ == ‘__main__‘:
    app.run()

#运行结果
Start...
页面显示
i am ok...

  

 

teardown_request 就和其余的三个不太一样了. 严格的来说 teardown_request 没有固定的执行位置. 因为他直接和请求上下文环境挂钩. 只有在请求上下文被 pop 出请求栈的时候才会触发 teardown_request, 所以即使之前有抛出错误的时候也会都会被执行, 执行完后返回 response.

 




请求勾子

标签:注册   route   显示   错误码   nbsp   ret   16px   art   页面   

原文地址:https://www.cnblogs.com/kongzhagen/p/12985281.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!