267 votes

Comment diviser une application flask en plusieurs fichiers py ?

Mon application flask est actuellement constituée d'un seul test.py avec plusieurs routes et le fichier main() route définie. Existe-t-il un moyen de créer un test2.py qui contient des routes qui n'ont pas été traitées dans test.py ?

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

Je suis préoccupé par le fait qu'il y a trop de routes en test.py et je voudrais faire en sorte que je puisse exécuter 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 dans test.py et/ou inclure dans test2.py pour que ça marche ?

7voto

Jaza Points 1371

Diviser l'application en plans est une excellente idée. Cependant, si cela n'est pas suffisant, et si vous voulez ensuite diviser le Blueprint lui-même en plusieurs fichiers py, cela est également possible en utilisant le système d'importation de modules Python, et en passant en boucle par toutes les routes qui sont importées à partir des autres fichiers.

J'ai créé un Gist avec le code pour faire cela :

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

Pour autant que je sache, c'est la seule façon possible de diviser un Blueprint pour le moment. Il n'est pas possible de créer des "sub-blueprints" dans Flask, bien qu'il y ait une question ouverte 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-prints 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 aient le même sous-préfixe URL.

2voto

plaes Points 8535

Une façon de procéder serait d'utiliser Blueprints .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X