Comment importer à partir du fichier de configuration dans Flask?
J'ai suivi la mise en page de mon projet Flask à partir de http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world .
J'ai la structure suivante:
app/
__init__.py
views.py
forms.py
myFile.py
run.py
config.py
Dans views.py, forms.py je suis capable d'utiliser
from config import basedir
Cependant, je ne peux pas utiliser cela dans myFile.py
, j'ai ajouté
import Flask
Et quand je le modifie, le serveur web Flask redémarre, mais il ne dit pas les changements trouvés dans app/myFile.py redémarrer juste redémarrer.
Que dois-je faire pour pouvoir utiliser
from config import basedir
Dans mon fichier python. Je ne vois rien de spécial en cours dans __init__.py
pour forms.py.
EDIT: C'est mon fichier __init__.py
:
from flask import Flask
from config import basedir
app = Flask(__name__)
app.config.from_object('config')
from app import views
2 réponses
Lorsque les gens parlent de configs dans Flask, ils parlent généralement de charger des valeurs dans la configuration de l'application. Dans votre exemple ci-dessus, vous pourriez avoir quelque chose comme app.config.from_object('config')
votre init.py
fichier. Ensuite, toutes les valeurs de configuration seront chargées dans le dictionnaire app.config
.
Puis dans l'une de vos fichiers, vous pouvez simplement importer l'objet application pour accéder à ce dictionnaire. J'ai tendance à l'accès app
objet en faisant from flask import current_app as app
, puis juste app.config['MY_SETTING']
pour obtenir la valeur qui m'intéresse. lisez plus dans la documentation .
Après un peu de Tripotage (et un peu d'aide du ' net), je pourrais améliorer cela encore, en changeant le code pour inclure la configuration à:
app.config.from_object('config.ProductionConfig')
Cela permet Ce modèle cool pour les configurations:
class Config(object):
DEBUG = True
DEVELOPMENT = True
SECRET_KEY = 'do-i-really-need-this'
FLASK_HTPASSWD_PATH = '/secret/.htpasswd'
FLASK_SECRET = SECRET_KEY
DB_HOST = 'database' # a docker link
class ProductionConfig(Config):
DEVELOPMENT = False
DEBUG = False
DB_HOST = 'my.production.database' # not a docker link
Ce qui reste maintenant, c'est de voir comment intégrer les configs de test dans cela, mais au moins c'est moins maladroit.