11.Flask钩子函数

Posted zhang_derek

tags:

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

     在Flask中钩子函数是使用特定的装饰器的函数。为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数。

  • before_first_request:Flask项目第一次部署后会执行的钩子函数。
  • before_request:请求已经到达了Flask,但是还没有进入到具体的视图函数之前调用。一般这个就是在函数之前,我们可以把一些后面需要用到的数据先处理好,方便视图函数使用。

before_request

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

@app.before_request
def before_request():
    print(在视图函数执行之前执行)

 

context_rocessor

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

@app.context_processor
def context_rocessor():
    return {{current_user:xxx}}

 

 errorhandler

在发生异常的时候,比如404,500错误,自定义错误的页面,在errorhangdler装饰的钩子函数下:

  • 要返回状态码
  • 必须写一个参数,来接受错误的信息

使用flask.abort可以手动的抛出相应的错误,比如开发者发现参数不正确的时候可以手动的抛出一个404错误。

@app.errorhandler(500)
def server_error(error):
    return render_template(500.html),500

@app.errorhandler(404)
def page_not_found(error):
    return render_template(404.html),404

 

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

--hook,某电商(bao)app签名实现数据采集,欢迎交流

Flask钩子函数

11Flask实战第11天:视图使用装饰器

11.5 Flask 蓝图,数据库链接

利用C++编程,将hook(钩子)加到程序每一个函数,其中hook后跳转到自己自定义函数代码,实现函数打印功能

DELPHI中的钩子是啥?