Подтвердить что ты не робот

Можно ли импортировать значения конфигурации колбы в модули без циклического импорта?

Я использую Flask with Blueprints, чтобы получить скелет для моего сайта, и у меня возникла проблема с использованием классов конфигурации в моем приложении.

Вот какой фиктивный код, который объясняет, как я все настроил:

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

Как я могу получить переменные конфигурации, хранящиеся в загружаемом классе я в app.py, внутри пакета users?

Является ли циклический импорт вроде from website import app (внутри models.py) приемлемым решением?

Если нет, есть ли какое-то простое решение, которое я пропустил?

4b9b3361

Ответ 1

Я полагаю, что для этого можно использовать иксюку current_app flask.

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

from flask import current_app

def test():
  return current_app.config.get('some_config_value')