美文网首页
Python Flask常用的钩子函数

Python Flask常用的钩子函数

作者: 小混混_f0f2 | 来源:发表于2018-05-03 17:35 被阅读0次
  1. 钩子函数
    钩子函数是指在执行函数和目标函数之间挂载的函数, 框架开发者给调用方提供一个point -挂载点, 至于挂载什么函数有我们调用方决定, 这样大大提高了灵活性
  2. 常用的钩子函数
  • before_first_request 处理第一次请求之前执行
# 服务器被第一次访问执行的钩子函数
@app.before_first_request
def first_request():
    print("Hello World")
  • before_request 在每次请求之前执行. 通常使用这个钩子函数预处理一些变量, 视图函数可以更好调用
# 在服务器接收的请求还没分发到视图函数之前执行的钩子函数
@app.before_request
def before_request():
    # print("我勾住了每次请求")
    user_id = session.get("user_id")
    if user_id:
        g.user = "DaYe"
  • teardown_appcontext 当APP上下文被移除之后执行的函数, 可以进行数据库的提交或者回滚
@app.teardown_appcontext
def teardown(exc=None):
    if exc is None:
        db.session.commit()
    else:
        db.session.rollback()
    db.session.remove()
  • template_filter, 增加模板过滤器
@app.template_filter
def upper_filter(s):
    return s.upper()
  • context_processor 上下文处理器, 返回的字典可以在全部模板中使用
@app.context_processor()
def context():
    # 必须返回一个字典
    # hasattr(obj, attr) 判断obj是否有attr属性, 注意此时的attr应该是字符串
    if hasattr(g, "user"):
        return {"current_username": "DaYe"}
    else:
        # 注意: 必须返回一个字典
        return {}
  • errorhander, 在发生一些异常时, 比如404错误, 就会自动调用对应的钩子函数
  1. 发生请求错误时, 框架会自动调用相对钩子函数, 并向钩子函数传入error参数
  2. 如果钩子函数没有定义error参数, 就会报服务器错误
  3. 开发者可以通过flask.abort方法手动抛出异常, 比如发现输入的参数错误可以使用abort(404)来解决
@app.errorhander(404)
def page_not_found(error):
    return render_template("error400.html"), 404


@app.errorhander(500)
def server_error(error):
    return render_template("error505.html"), 500
以下为授权协议. 当你引用本文时, 默认你同意本协议.
凭此协议, 你可以在不通知作者的情况下, 对本文进行修改,转发或者进行商业行为. 但是你无权修改 ,删除本协议.
@Auther: DaYe
@Email: yesongsheng@163.com
@Time: 5/2/2018 15:25
感谢你自觉遵守本协议

相关文章

网友评论

      本文标题:Python Flask常用的钩子函数

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