Comment diviser l’application flask en plusieurs fichiers py?

Mon application flask consiste actuellement en un seul fichier test.py avec plusieurs routes et la route main() définie. Y a-t-il un moyen de créer un fichier test2.py contenant des itinéraires non gérés dans test.py ?

 @app.route('/somepath') def somehandler(): # Handler code here 

Je crains qu’il y ait trop de routes dans test.py et que je python test.py faire en sorte que je puisse lancer python test.py , qui récupérera également les routes sur test.py comme s’il faisait partie du même fichier. Quels changements dois-je apporter à test.py et / ou inclure dans test2.py pour que cela fonctionne?

Vous pouvez utiliser la structure de package Python habituelle pour diviser votre application en plusieurs modules, voir les documents Flask.

cependant,

Flask utilise un concept de plan directeur pour créer des composants d’application et prendre en charge des modèles communs au sein d’une application ou entre applications.

Vous pouvez créer un sous-composant de votre application en tant que Blueprint dans un fichier distinct:

 simple_page = Blueprint('simple_page', __name__, template_folder='templates') @simple_page.route('/') def show(page): # stuff 

Et puis l’utiliser dans la partie principale:

 from yourapplication.simple_page import simple_page app = Flask(__name__) app.register_blueprint(simple_page) 

Les plans directeurs peuvent également regrouper des ressources spécifiques: modèles ou fichiers statiques. Veuillez vous référer aux documents Flask pour tous les détails.

Je voudrais recommander flask-empty à GitHub.

Il offre un moyen simple de comprendre les plans directeurs , les vues multiples et les extensions .

Diviser l’application en plans est une excellente idée. Toutefois, si cela ne suffit pas, et si vous souhaitez ensuite diviser le Blueprint en plusieurs fichiers py, cela est également possible en utilisant le système d’importation des modules Python, puis en parcourant toutes les routes imscopes des autres fichiers. .

J’ai créé une liste avec le code pour ce faire:

https://gist.github.com/Jaza/61f879f577bc9d06029e

Pour autant que je sache, c’est le seul moyen possible de diviser un plan directeur pour le moment. Il n’est pas possible de créer des “sous-plans” dans Flask, bien qu’il y ait un problème avec beaucoup de discussions à ce sujet:

https://github.com/mitsuhiko/flask/issues/593

De plus, même si cela était possible (et qu’il est probablement possible d’utiliser certains extraits de ce sujet), les sous-plans peuvent être trop ressortingctifs pour votre cas d’utilisation, par exemple si vous ne voulez pas que tous les itinéraires soient sous-module pour avoir le même sous-préfixe d’URL.