Mon application de flacon consiste actuellement en un seul fichier test.py
avec plusieurs routes et la route main()
définie. Existe-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 suis préoccupé par le fait qu'il y a trop de routes dans test.py
et souhaite le rendre tel que je puisse exécuter python test.py
, qui récupèrera également les routes sur test.py
comme si elles faisaient partie du même fichier. Quelles modifications dois-je apporter dans 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 la documentation Flask.
Cependant,
Flask utilise un concept de plans pour la création de composants d’application et prend en charge les modèles courants au sein d’une application ou entre plusieurs applications.
Vous pouvez créer un sous-composant de votre application en tant que modèle dans un fichier séparé:
simple_page = Blueprint('simple_page', __name__, template_folder='templates')
@simple_page.route('/<page>')
def show(page):
# stuff
Et puis utilisez-le 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 au Flask docs pour tous les détails.
Je voudrais recommander flask-empty à GitHub.
Il fournit un moyen facile de comprendre Plans , vues multiples et extensions .
Diviser l'application en modèles est une excellente idée. Toutefois, si cela ne suffit pas et si vous souhaitez ensuite diviser le Blueprint lui-même en plusieurs fichiers py, vous pouvez également utiliser le système d'importation de modules Python standard, puis parcourir toutes les routes importées à partir d'autres fichiers. .
J'ai créé un Gist avec le code pour cela:
https://Gist.github.com/Jaza/61f879f577bc9d06029e
Autant que je sache, c'est la seule façon possible de diviser un plan d'action pour le moment. Il n'est pas possible de créer des "sous-plans" dans Flask, même si un problème reste ouvert avec de nombreuses discussions à ce sujet:
https://github.com/mitsuhiko/flask/issues/593
En outre, même si cela était possible (et qu'il est probablement possible d'utiliser certains des extraits de code 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 tous les itinéraires d'un sous-module aient le même sous-préfixe d'URL.
Vous pouvez diviser comme Django. Voir ci-dessous squelette