文章内容

2024/7/23 1:23:40,作 者: 黄兵

Flask current_app.config[''] 和 current_app.config.get('') 有什么区别

在 Flask 中,current_app.config['']current_app.config.get('') 用于从 Flask 应用的配置中获取配置项,但它们有一些细微的区别:

current_app.config['key']:

  • 这是使用字典键的方式直接获取配置项。
  • 如果配置中不存在这个键,会引发 KeyError 异常。

下面是示例代码:

value = current_app.config['MY_SETTING']


current_app.config.get('key', default=None):

  • 这是使用字典的 get 方法获取配置项。
  • 如果配置中不存在这个键,不会引发异常,而是返回一个默认值(如果提供了默认值)。
  • 如果没有提供默认值,默认返回 None
  • 下面是示例代码:

    value = current_app.config.get('MY_SETTING', 'default_value')


    应用场景:

  • 如果你确定配置项一定存在,并且希望在缺少配置项时立即得到反馈(即通过异常通知你),可以使用 current_app.config['key']
  • 如果你不确定配置项是否存在,或者希望在缺少配置项时提供一个默认值,避免异常,可以使用 current_app.config.get('key', default)

  • 示例:

    from flask import Flask, current_app
    
    app = Flask(__name__)
    app.config['MY_SETTING'] = 'some_value'
    
    with app.app_context():
        # 使用 current_app.config['MY_SETTING']
        try:
            value = current_app.config['MY_SETTING']
            print('MY_SETTING:', value)
        except KeyError:
            print('MY_SETTING not found!')
    
        # 使用 current_app.config.get('MY_SETTING')
        value = current_app.config.get('MY_SETTING', 'default_value')
        print('MY_SETTING:', value)
    
        # 使用 current_app.config.get('NON_EXISTENT_SETTING')
        value = current_app.config.get('NON_EXISTENT_SETTING', 'default_value')
        print('NON_EXISTENT_SETTING:', value)

    其结果如下:

    MY_SETTING: some_value
    MY_SETTING: some_value
    NON_EXISTENT_SETTING: default_value

    通过👆的例子可以看出,current_app.config.get('key', default) 更适合在不确定配置项是否存在的情况下使用,而 current_app.config['key'] 更适合在你确定配置项一定存在时使用。


    其它相关推荐:

    1、flask-oauthlib

    2、Flask 用户指南

    3、flask-jwt-oidc

    4、Flask CLI 命令行接口

    5、Flask 获取客户端访问uri

    分享到:

    发表评论

    评论列表