推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
plko345
V2EX  ›  Python

请教 flask 的 config.py 优雅使用方式

  •  
  •   plko345 · Sep 2, 2020 · 4515 views
    This topic created in 2260 days ago, the information mentioned may be changed or developed.

    看了一些文章都在教怎么设置 flask 的配置, 但都没说到怎么合理的用

    # config.py
    class Config(object):
        A = 'apple'
        B = 'banana'
        # ...
    
    # service.py
    import os
    from app import create_app
    app = create_app(os.getenv('FLASK_CONFIG') or 'default')
    

    现在在代码的各处都可能使用到这些配置

    文档里的方式是

    from service import app
    
    func(app.config['A'])
    var = app.config['B']
    
    # ...
    

    这种使用方式是所有使用到配置的都要导入 app, 那还不如直接导入 config, 那这么做是为什么呢?

    也想问下大家是怎么用的?

    12 replies  •  2025-04-07 02:10:43 +08:00
    linw1995
    linw1995
    Sep 2, 2020
    1
    开源轮子 dynaconf 可以了解一下
    qqxx520
    qqxx520
    Sep 3, 2020 via iPhone
    2
    把配置放到 app.config 似乎成了一个约定,核心的配置还是要放到 app.config, 一些外围的或者自己定义的配置当然可以随便组织,这也是 flask 的灵活性。个人认为,没必要把配置搞得那么复杂,有 DevConfig, TestingConfig 等,像 django 默认提供的 settings.py 那样就挺好,如果要调整一些参数,可以在.env 文件里调整.
    prolic
    prolic
    Sep 3, 2020 via Android
    3
    怎么舒服怎么来呗,我都是 conf = Config();from config import conf;conf.get('addr')
    plko345
    plko345
    OP
    Sep 3, 2020 via Android
    4
    @prolic 用 conf 的话直接 conf.A 就好了,比 app.config 方便很多
    vZexc0m
    vZexc0m
    Sep 3, 2020 via Android
    5
    直接把 config 当做变量传入 create_app 也行
    renmu123
    renmu123
    Sep 3, 2020 via Android
    6
    我是觉得只要能把几个开发环境区分开,你怎么搞 config 都没事,目前这种形式可能是社区认为的最佳实践,你不认可也完全没问题
    ratazzi
    ratazzi
    PRO
    Sep 3, 2020 via iPhone❤️1
    7
    current_app 了解下
    ebingtel
    ebingtel
    Sep 3, 2020❤️1
    8
    @renmu123 +1……根据 env 决定 app 加载哪个 config……后续通过 current_app.config 去获取配置项, 而不是拿着 config 对象 传来传去
    plko345
    plko345
    OP
    Sep 3, 2020 via Android
    9
    @renmu123 我觉得是不错的,但想知道有没有更好的使用方法
    plko345
    plko345
    OP
    Sep 4, 2020
    10
    @ratazzi
    @ebingtel
    谢谢, 我了解了下, 这应该就是我想要的
    plko345
    plko345
    OP
    Sep 4, 2020
    11
    感觉还是导入 config 方便, 直接 将配置作为属性, 还能自动补全, 不用写 ['']
    Zeeland4v
    Zeeland4v
    Apr 7, 2025
    12
    可以试试用 conftier 来配置,框架集成会方便很多。https://conftier.zeeland.top/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1821 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 00:06 · PVG 08:06 · LAX 16:06 · JFK 19:06
    ♥ Do have faith in what you're doing.