18

ウェブサイトのスケルトンを取得するためにFlaskwithBlueprintsを使用していますが、アプリケーションの奥深くで構成クラスを使用する際に問題が発生しています。

これが私がすべてをどのように設定したかを説明するいくつかのダミーコードです:

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()

website / users / models.py

# How can I reach the config variables here?
def test():
    # I want config['DEBUG'] here

パッケージapp.pyの奥深くにロードしたクラスに格納されている構成変数に到達するにはどうすればよいですか?users

from website import app(models.py内の)循環インポートは受け入れられたソリューションですか?

そうでない場合、私が見逃したいくつかの簡単な解決策はありますか?

4

1 に答える 1

25

そのためにflaskのcurrent_appイディオムを使用できると思います。

http://flask.pocoo.org/docs/api/#flask.current_app

from flask import current_app

def test():
  return current_app.config.get('some_config_value')
于 2012-11-19T21:14:14.777 に答える