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')