2一、Flask实战第21天:经常使用的Flask钩子函数

在Flask中钩子函数是使用特定的装饰器装饰的函数。为何叫钩子函数呢?是由于钩子函数能够在正常执行的代码中,插入一段本身想要执行的代码。那么这种函数就叫作钩子函数。html

before_first_request

 部署后处理第一次请求以前执行,当执行第二次的时候,则不会再执行此钩子函数flask

 

before_request

在每次请求以前执行。一般能够用这个装饰器来给视图函数增长一些变量,好比下面的例子app

 

template_filter

在使用Jinja2模板时候自定义过滤器。函数

@app.route('/')
def index():
    context = {
        'article': 'hello, this is test hello world'
    }
    return render_template('index.html', **context)

@app.template_filter('cut') #把cut函数注册到过滤器中
def cut(value):   #value就是使用过滤器的变量
    value = value.replace('hello', '')
    return value   #函数的返回值会做为过滤器的返回值

index.htmlthis

{{ article|cut }}

 

context_processor

使用这个钩子函数,必须返回一个字典,这个字典的值在全部模板中均可以使用。若是在一些模板中都要用到的变量,那么就可使用这个钩子函数来返回,而不用再每一个视图函数中的render_template中去写,这样可让代码更加简洁容易维护。spa

以下:code

a.htmlhtm

{{ name }}

b.html对象

{{ name }}

 查看结果blog

注意:

由于这个钩子函数必须返回字典,所以当有作条件判断的时候,无论是True仍是Flase都应该返回字典,就算你什么数据都不想取,也应该传一个空字典,不然会报错不是一个可迭代的对象

@app.context_processor
def context_processpor():
    if xxxxx:
        return {'name': 'heboan'}
    return {}

 

errorhandler

在发生一些异常的时候,好比40四、500、400等错误。那么想要优雅的处理这些错误,就可使用errorhandler

访问首页(想要看到效果,把DEBUG模式关闭)

访问不存在的页面

 

咱们可使用flask.abort手动抛出相应的错误,以下

访问首页

相关文章
相关标签/搜索