Ответ 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')
Я использую 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) приемлемым решением?
Если нет, есть ли какое-то простое решение, которое я пропустил?
Я полагаю, что для этого можно использовать иксюку 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')