web-dev-qa-db-ja.com

Flaskの設定ファイルからインポートする方法は?

私のFlaskプロジェクトの http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-のレイアウトに従いましたi-hello-world

私は次の構造を持っています:

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__.py for forms.py。

編集:これは私の__init__.pyファイル:

from flask import Flask
from config import basedir

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

Flaskでの構成について話すとき、彼らは一般にアプリの構成への値のロードについて話します。上記の例では、_init.py_ファイルにapp.config.from_object('config')のようなものを含めることができます。次に、すべての構成値が_app.config_辞書にロードされます。

その後、任意のファイルでアプリオブジェクトをインポートするだけで、その辞書にアクセスできます。 _from flask import current_app as app_を実行することでappオブジェクトにアクセスする傾向があり、次に_app.config['MY_SETTING']_だけを使用して、関心のある値を取得します。 ドキュメントの詳細を参照

53
Doobeh

少しいじった後(および 'netからの少しの助け)、構成を含めるようにコードを変更することにより、これをさらに改善できました。

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

現在残っているのは、テスト設定をこれに統合する方法を確認することですが、少なくともそれは不器用ではありません。

19
mrArias