Python Flask常用的钩子函数

2018-05-03  本文已影响0人  小混混_f0f2
  1. 钩子函数
    钩子函数是指在执行函数和目标函数之间挂载的函数, 框架开发者给调用方提供一个point -挂载点, 至于挂载什么函数有我们调用方决定, 这样大大提高了灵活性
  2. 常用的钩子函数
# 服务器被第一次访问执行的钩子函数
@app.before_first_request
def first_request():
    print("Hello World")
# 在服务器接收的请求还没分发到视图函数之前执行的钩子函数
@app.before_request
def before_request():
    # print("我勾住了每次请求")
    user_id = session.get("user_id")
    if user_id:
        g.user = "DaYe"
@app.teardown_appcontext
def teardown(exc=None):
    if exc is None:
        db.session.commit()
    else:
        db.session.rollback()
    db.session.remove()
@app.template_filter
def upper_filter(s):
    return s.upper()
@app.context_processor()
def context():
    # 必须返回一个字典
    # hasattr(obj, attr) 判断obj是否有attr属性, 注意此时的attr应该是字符串
    if hasattr(g, "user"):
        return {"current_username": "DaYe"}
    else:
        # 注意: 必须返回一个字典
        return {}
  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
感谢你自觉遵守本协议
上一篇下一篇

猜你喜欢

热点阅读