48

我从http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world遵循了我的 Flask 项目的布局。

我有以下结构:

app/
    __init__.py
    views.py
    forms.py
    myFile.py
run.py
config.py

在views.py,forms.py中我可以使用

from config import basedir

但是我不能在 myFile.py 中使用它

我添加了

import Flask 

当我修改它时,Flask Web 服务器会重新启动,但它并没有说在 app/myFile.py 中找到了更改重新启动它只是重新启动。

我需要做什么才能使用

from config import basedir

在我的python文件中。我没有看到__init__.pyforms.py 有什么特别之处。

编辑:这是我的__init__.py文件:

from flask import Flask
from config import basedir

app = Flask(__name__)
app.config.from_object('config')
from app import views
4

3 回答 3

82

当人们谈论 Flask 中的配置时,他们通常是在谈论将值加载到应用程序的配置中。app.config.from_object('config')在您上面的示例中,您的文件中可能有类似的init.py内容。然后所有配置值将被加载到app.config字典中。

然后在您的任何文件中,您只需导入应用程序对象即可访问该字典。我倾向于app通过from flask import current_app as appthen来访问该对象,app.config['MY_SETTING']以获得我关心的值。在文档中阅读更多内容

于 2013-02-27T23:13:16.770 回答
32

经过一番摆弄(以及来自网络的一点帮助),我可以通过将代码更改为包含配置来进一步改进这一点:

app.config.from_object('config.ProductionConfig')

这为配置启用了这种很酷的模式:

class Config(object):
    DEBUG = True
    DEVELOPMENT = True
    SECRET_KEY = 'do-i-really-need-this'
    FLASK_HTPASSWD_PATH = '/secret/.htpasswd'
    FLASK_SECRET = SECRET_KEY
    DB_HOST = 'database' # a docker link

class ProductionConfig(Config):
    DEVELOPMENT = False
    DEBUG = False
    DB_HOST = 'my.production.database' # not a docker link

现在剩下的就是看看如何将测试配置集成到其中,但至少感觉不那么笨拙。

于 2016-10-14T12:53:14.240 回答
2

我在我的烧瓶项目 - 根文件夹中创建了一个 config.json 文件,如下所示:

配置文件

{
    "mail_settings":{
        "MAIL_SERVER": "smtp.gmail.com",
        "MAIL_PORT": 465,
        "MAIL_USE_TLS": "False",
        "MAIL_USE_SSL": "True",
        "MAIL_USERNAME": "your_mail@gmail.com",
        "MAIL_PASSWORD": "your_password"
    },
    "database":{
        "MYSQL_HOST":"localhost",
        "MYSQL_USER": "user_name",
        "MYSQL_PASSWORD":"password",
        "MYSQL_DB":"database_name"
    }
}

只需在我们要访问配置值的地方添加下面的代码。例如,我将在 app.py 中使用,如下所示:

首先导入flask json库:

import json

第二次打开文件以读取json并将其存储在一些变量中,如下所示:

with open('config.json') as config_file:
    config_data = json.load(config_file)

在创建一个 Flask 应用程序后添加以下代码,如下所示,命名为 app app = Flask(__name__),用于访问 config.json - 配置值。

# mail configuration
mail_settings = config_data['mail_settings']
app.config.update(mail_settings)

# database configuration
db_settings = config_data['database']
app.config.update(db_settings)
于 2019-12-23T12:26:40.337 回答