钩子函数,即hook函数,定义钩子函数时使用对应的装饰器即可。钩子函数的作用可以理解为在正常代码的某个特定节点插入定义好的钩子函数。
常用的钩子函数:
before_first_request:在项目部署好后,服务器处理第一次请求之前执行。
before_request:在每次请求之前执行,即在请求到达服务器后,执行具体的视图函数之前执行。
teardown_appcontext:在每次请求之后执行(无论是否发生了异常)。
template_filter:自定义在jinja2模板中的过滤器,返回处理后的值到模板中,可以参考jinja2中过滤器的使用。
context_processor:上下文处理器,返回一个字典,字典的项在所有的HTML模板中都可以直接使用,使用的时候引用对应的key即可。这个功能类似于“flask.g”对象,不同的之处在于g对象用于py代码中,而此钩子函数则用于HTML模板中。
errorhandler:错误处理,请求发生错误后,会去执行此装饰器定义的钩子函数。需要注意的是:1、使用时需要给装饰器中传入对应的状态码;2、定义此钩子函数时必须有一个error参数;3、此钩子函数应该返回对应的状态码,如果不返回对应的状态码的话,浏览器会认为这是正常返回的页面,并没有发生错误。必要时可以使用“from flask import abort”手动抛出错误,如abort(404)则是抛出一个404错误。
errorhandler钩子函数简单示例:
# 给装饰器传入对应的状态码 # 发生404错误时,会执行此函数,并将此函数的返回结果返回到浏览器 @app.errorhandler(404) def page_not_found(error): """ 定义此钩子函数时必须有一个error参数,无论函数中是否用得到 """ # 此钩子函数应该返回对应的状态码,告诉浏览器发生什么错误,而不是正常返回的结果 return '访问的页面不存在!', 404
最新评论