Dav*_*ran 3 python config flask
我正在编写一个 Flask 网络应用程序,但遇到了一个真正困扰我的小问题。这是我的 microblog.py 文件:
from flask import Flask
from flask import render_template, flash, redirect
from forms import LoginForm
app = Flask(__name__)
app.config.from_object('config')
@app.route('/')
@app.route('/index')
...
Run Code Online (Sandbox Code Playgroud)
这是我的项目结构:
microblog\
flask\
<virtual environment files>
app\
static\
templates\
__init__.py
microblog.py
forms.py
tmp\
run.py
config.py
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么 config.py 文件必须在 app 文件夹之外并且是上一级?我真的不能告诉自己这是“魔法”,所以我必须找到答案,但到目前为止我已经惨败了。
我的发现表明它与导入系统有关(python导入真的很奇怪)但问题是,我的microblog.app.root_path是......(/Users/myname/microblog/app)所以没有办法它可以看到配置文件。这是怎么回事?
如果你知道答案,请从这种疯狂中拯救我可怜的灵魂。先感谢您!
与其为您的配置使用 Python 文件,不如使用更适合此类工作的格式。JSON 就是一个这样的候选者,你可以做这样的事情(作为官方教程第 2 步建议的变体):
import json
with open('../config.json') as f:
config = json.load(f)
app.config.update(config)
Run Code Online (Sandbox Code Playgroud)
而不是config.py文件,您将拥有一个config.json文件(在同一位置),它可能看起来像
{
"DEBUG": true,
"SECRET_KEY": "development key"
}
Run Code Online (Sandbox Code Playgroud)
当然,您不必使用json,还有其他配置文件格式可供您使用,但您可以自行决定如何使用它。