• 21、Flask实战第21天:常用的Flask钩子函数


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

    before_first_request

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

    before_request

    在每次请求之前执行。通常可以用这个装饰器来给视图函数增加一些变量,比如下面的例子

    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.html

    {{ article|cut }}

    context_processor

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

    如下:

    a.html

    {{ name }}

    b.html

    {{ name }}

     查看结果

    注意:

    因为这个钩子函数必须返回字典,因此当有做条件判断的时候,不管是True还是Flase都应该返回字典,就算你什么数据都不想取,也应该传一个空字典,否则会报错不是一个可迭代的对象

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

    errorhandler

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

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

    访问不存在的页面

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

    访问首页

  • 相关阅读:
    SP3267 DQUERY
    P3808 【模板】AC自动机(简单版)
    What Are You Talking About HDU
    【博客同步】【微信首发】GC-server的安装与使用
    博客园界面背景及一些特效设置
    C# 常用特性(Attribute)
    CRC常用参数模型及C#代码实现
    简单实用算法——字节位序反转
    C#串口开发之SerialPort类封装
    C#泛型的类型参数约束
  • 原文地址:https://www.cnblogs.com/sellsa/p/9383059.html
Copyright © 2020-2023  润新知