Mon application flask se compose actuellement d'un seul test.py
fichier avec plusieurs itinéraires et l' main()
itinéraire défini. Est-il possible de créer un test2.py
fichier contenant des itinéraires non gérés test.py
?
@app.route('/somepath')
def somehandler():
# Handler code here
Je crains qu'il y ait trop de routes test.py
et je voudrais faire en sorte que je puisse courir python test.py
, ce qui reprendra également les routes test.py
comme si elles faisaient partie du même fichier. Quels changements dois-je apporter test.py
et / ou inclure test2.py
pour que cela fonctionne?
Vous pouvez utiliser une astuce simple qui consiste à importer la variable d'application flask de main dans un autre fichier, comme:
test-routes.py
et dans vos fichiers principaux, où vous avez déclaré l'application flask, importez des routes de test, comme:
app.py
Cela fonctionne de mon côté.
la source
__main__
fait référence à votre fichier d'entrée, c'est tout!import test-routes
ne peut pas être en haut duapp.py
fichier. Il s'est écrasé gunicorn mais après avoir déplacé l'importation vers le bas du fichier, cela a fonctionné. "il suffit de s'assurer que le module est importé et nous le faisons au bas du fichier"Je voudrais recommander flask-empty sur GitHub.
Il fournit un moyen facile de comprendre les Blueprints , les vues multiples et les extensions .
la source
Diviser l'application en plans est une excellente idée. Cependant, si cela ne suffit pas et si vous souhaitez ensuite diviser le Blueprint lui-même en plusieurs fichiers py, cela est également possible en utilisant le système d'importation de module Python normal, puis en parcourant toutes les routes importées à partir des autres fichiers. .
J'ai créé un Gist avec le code pour faire ceci:
https://gist.github.com/Jaza/61f879f577bc9d06029e
Pour autant que je sache, c'est la seule façon faisable de diviser un plan pour le moment. Il n'est pas possible de créer des "sous-plans" dans Flask, bien qu'il y ait un problème ouvert avec beaucoup de discussions à ce sujet:
https://github.com/mitsuhiko/flask/issues/593
De plus, même si c'était possible (et c'est probablement faisable en utilisant certains des extraits de ce fil de discussion), les sous-plans peuvent être trop restrictifs pour votre cas d'utilisation de toute façon - par exemple, si vous ne voulez pas que toutes les routes dans un sous-module pour avoir le même sous-préfixe d'URL.
la source
Cette tâche peut être accomplie sans plans et importations délicates à l'aide de la mappe d'URL centralisée
app.py
views.py
la source