12
ブループラントとFlaskを使用して私のウェブサイトのスケルトンを取得しています。アプリケーションの設定クラスを使用して問題が発生しています。フラスコの設定値を循環インポートなしでモジュールにインポートすることはできますか?
ここで私はすべてのものを設定している方法について説明し、いくつかのダミーコードです:
websiteconfig.py
class Config(object):
pass
class ProductionConfig(Config):
DEBUG = False
class DevelopmentConfig(Config):
DEBUG = True
ウェブサイト/ __ INIT __.py:
# Some app code and config loading
app = Flask('website')
app.config.from_object('websiteconfig.DevelopmentConfig')
# Import some random blueprint
from website import users
app.register_blueprint(users.api)
# This works:
# print app.config['DEBUG']
は、
ウェブサイト/ユーザー/ __ init __.py:
from flask import Blueprint
from website.users.models import test
api = Blueprint('users', __name__, url_prefix='/users')
# This works:
# print api.config['DEBUG']
# From models
print test()
ウェブサイト/ユーザー/ models.py:
# How can I reach the config variables here?
def test():
# I want config['DEBUG'] here
がどのように私はusers
パッケージ内部の深いapp.py
にロードしたクラスに保存されている設定変数を達することができますか?
from website import app
(inside models.py)のような循環インポートは、受け入れられる解決策ですか?
もしそうでない場合は、私が見逃した簡単な解決策がありますか?
私はこの答えを受け入れるつもりです。正確には私が望んでいたものではありませんが、リファクタリングでは実際にその仕事をしています。アプリケーションの外でapp.test_request_context()を使って作業する必要がありますが、そうする必要があります。どうもありがとう! =) – moodh
@moodhあなたはどのような解決策でしたか?これも私が苦労していることです。 – Patrick
@ceolwulf:設定モジュールをフラスコなしでも使えるようにしたので、設定インポートget_configから呼び出して、必要なときにconfig = get_config()を呼び出してください:) – moodh