Sto usando Flask con Blueprints per ottenere uno scheletro per il mio sito Web e sto riscontrando un problema nell'utilizzo delle classi di configurazione nella mia applicazione.È possibile importare i valori di configurazione del pallone nei moduli senza importazione circolare?
Ecco alcuni codice fittizio che spiega come ho impostato tutto in su:
websiteconfig.py
class Config(object):
pass
class ProductionConfig(Config):
DEBUG = False
class DevelopmentConfig(Config):
DEBUG = True
sito/__ 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']
sito web/utenti/__ 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()
sito/utenti/models.py:
# How can I reach the config variables here?
def test():
# I want config['DEBUG'] here
Come posso raggiungere le variabili di configurazione memorizzate nella classe I di carico in app.py
profondo all'interno della confezione users
?
È un'importazione circolare come from website import app
(all'interno di models.py) una soluzione accettata?
In caso contrario, c'è una soluzione semplice che ho perso?
ho intenzione di accettare questa risposta. Non è esattamente quello che volevo, ma con alcuni refactoring fa davvero il lavoro. Dovrò lavorare con app.test_request_context() al di fuori dell'applicazione, ma sì, dovrò farlo. Molte grazie! =) – moodh
@moodh con quale soluzione sei arrivato? Anche questo è qualcosa con cui sto lottando. – Patrick
@ceolwulf: ho reso il modulo di configurazione utilizzabile anche senza pallone, quindi uso semplicemente da config import get_config e richiamo config = get_config() ogni volta che ne ho bisogno :) – moodh