Flask---钩子函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask---钩子函数相关的知识,希望对你有一定的参考价值。

参考技术A 大大提供了灵活性。

@before_first_request
在对应用程序实例的第一个请求之前注册要运行的函数,只会运行一次

@before_request
在每个请求之前注册一个要运行的函数,每一次请求都会执行一次

@after_request
在每个请求之后注册一个要运行的函数,每次请求完成后都会执行。
需要接受一个Response对象作为参数,并返回一个新的Response对象,或者返回接收的Response对象

@teardown_request
注册在每一个请求的末尾,不管是否有异常,每次请求的最后都会执行。

@context_processor
上下文处理器,返回的字典可以在全部的模板中使用

@template_filter('xxxxxx')
增加模板过滤器,可以在模板中使用该函数,后面的参数是名称,在模板中用到

@errorhandler(400)
发生一些异常时,比如404,500,或者抛出异常(Exception)之类的,就会自动调用该钩子函数
1.发生请求错误时,框架会自动调用相应的钩子函数,并向钩子函数中传入error参数
2.如果钩子函数没有定义error参数,就会报错
3.可以使用abort函数来手动终止请求抛出异常,如果要是发生参数错误,可以abort(404)之类的

a. app.py

b. hooks.py

c. main.py

看别人的写法,创建hooks.py后,直接在该文件import app后,然后写钩子函数,在访问过程中钩子函数是生效,但我一直失败,没办法只能更改写法了。
先在app.py中创建app对象,然后在hooks.py中import app写好钩子函数,最后在main.py中import app时不再是从app.py中了,而是从hooks.py中import,那么在这个过程中hooks.py文件就加载了,钩子函数也就生效了。

七十一:flask钩子函数之关于context_processor的钩子函数

 

context_processor:
使用这个钩子函数,必须返回一个字典,这个字典的值在所有模板中都可以使用,这个钩子函数作用是,如果一些在很多模板中都要用到的变量,那么就可以使用此钩子函数来返回,而不用在每个视图函数中的render_template()中去写,这样代码更加简洁和好维护,此函数必须返回数据,且只能字典即使是空的字典

 

技术图片

技术图片

技术图片

访问

技术图片

 技术图片

 

以上是关于Flask---钩子函数的主要内容,如果未能解决你的问题,请参考以下文章

11.Flask钩子函数

Flask---钩子函数

七十一:flask钩子函数之关于context_processor的钩子函数

flask 钩子函数

Flask框架钩子函数使用方式及应用场景分析

flask钩子函数