python - 关注flask config的问题,求解?

 Jacky-xu1992 发布于 2022-10-27 11:44

文件目录

.
├── instance
│   └── config.py
├── main
│   ├── __init__.py
│   └── __init__.pyc
├── run.py
└── venv

代码

# run.py
from main import app

if __name__ == '__main__':
    app.debug = app.config['DEBUG']
    app.run()
# main/__init__.py
from flask import Flask

app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile('config.py')
# instance/config.py
DEBUG = False

AppID = '123321'

出现的问题是 app.config 中无法加载我新建的 config.py 的内容?但是我设置的DEBUG为False却是可以加载的

# python shell
In [1]: from main import app

In [3]: app.config['DEBUG']
Out[3]: False

In [4]: app.config['AppID']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
 in ()
----> 1 app.config['AppID']

KeyError: 'AppID'

照着这里的内容去做的:https://spacewander.github.io...

3 个回答
  • instance目录本身就是不包含在版本控制里面的,它的作用就是为了环境的隔离,只有当DEBUGTrue的时候才会在调用默认config的文件后,继续调用它下面的config文件,这样相同的配置就会使用后者进行覆盖

    2022-10-27 23:02 回答
  • 我试了一下发觉配置的键只允许使用全大写加_线的命名方式。。。如APP_ID

    2022-10-27 23:08 回答
  • 首先第一点:config文件只能加载大写字母的配置,官方文档的说明如下

    另外,DEBUG是属于app的config属性里面self.default_config字典里的内容,而这个default_config可以见下图



    另外我昨天正好在研究config的加载机制,昨天刚写的笔记,可以参考下,可能语句有些混乱,不知道你能看懂不
    http://blog.csdn.net/bestalle...

    2022-10-27 23:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有