Flask 第十六话之钩子函数

Flask中常用钩子函数

一、before_first_request:处理第一次请求之前执行

@app.before_first_request
# 处理第一次请求之前执行
def first_request():
    print("第一次请求前")

二、before_request:每次视图函数请求前

@app.before_request
# 视图函数每次请求前
def before_req():
    print("视图函数每次请求前")

 三、teardown_appcontext:不管是否有异常,注册函数都会在每次请求后执行

@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 func(s):
    s.upper()

五、context_processor:上下文处理器。返回的字典中的键可以在模板上下文中使用,可以公用数据

@app.context_processor
# 上下文处理器。返回的字典中的键可以在模板上下文中使用
def content():
    return {"aaa":111}

 index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ aaa }}
</body>
</html>

lists.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ aaa }}
</body>
</html>

 六、errorhandler():errorhandler接收状态码,可以自定义返回状态码的处理方法

@app.errorhandler(404)
# errorhandler接收状态码,可以自定义返回状态码的处理方法
def page_not_find(error):
    return "这个没有找到"

 手动抛出异常:

from flask import render_template,abort
from ext import app

@app.route('/')
def hello_world():
    # 直接报错
    abort(404)
    return render_template('index.html')

 

posted @ 2020-03-15 13:19  我在地球凑人数的日子  阅读(211)  评论(0编辑  收藏  举报