Split Python Flacon application en plusieurs fichiers
Je vais avoir du mal à comprendre comment scinder une fiole d'application en plusieurs fichiers.
Je suis de la création d'un service web et je veux diviser l'api dans des fichiers différents (AccountAPI.py, UploadAPI.py, ...), juste pour que je n'ai pas un énorme fichier python.
J'ai lu que vous pouvez faire cela avec des Modèles, mais je ne suis pas entièrement sûr que la route est la bonne pour moi.
En fin de compte je veux lancer un Principal fichier python et inclure d'autres fichiers de sorte que quand il s'exécute, ils sont considérés comme un seul gros fichier.
Par exemple si j'ai Main.py et AccountAPI.py je veux être capable de faire cela:
Main.py:
from flask import Flask
import AccountAPI
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
AccountAPI.py:
@app.route("/account")
def accountList():
return "list of accounts"
Je sais qu'avec cet exemple, il est évident qu'elle ne fonctionne pas, mais est-il possible de faire quelque chose comme ça?
Grâce
Vous devez vous connecter pour publier un commentaire.
Oui, les Modèles sont de la bonne façon de le faire. Ce que vous essayez de le faire peut être réalisé comme ceci:
Main.py
AccountAPI.py
Si c'est une option, vous pouvez envisager d'utiliser différents préfixes d'URL pour les différentes Api/schémas afin de séparer proprement eux. Cela peut être fait avec une légère modification au-dessus
register_blueprint
appel:Pour plus de documentation, vous pouvez également avoir un coup d'oeil à les docs officielles.
accountList
à l'intérieur d'une classe dans le même fichier?À l'aide de
Blueprint
vous pouvez ajouter vos itinéraires dans leroutes
répertoire.Structure
__init__.py
index.py
users.py
app.py
Si vous voulez ajouter un nouveau fichier de route, dire
accounts.py
, il vous suffit de créer le fichieraccounts.py
dans leroutes
répertoire, tout commeindex.py
etusers.py
, puis de l'importer dans leroutes.__init__.py
fichierSi vous êtes à l'aide de plans et souhaitez itinéraire /redirection vers une url de votre plan à l'intérieur d'un template que vous utilisez, vous devez utiliser le bon url_for déclaration.
Dans votre cas, si vous souhaitez ouvrir l'url du compte de votre plan, vous devez état comme ceci dans votre modèle:
et pour les principales application il devrait ressembler à ceci:
Sinon le werkzeug bibliothèque lèvera une erreur.
Une autre façon de faire peut être avec chargement différé, où vous explicitement joindre les fonctions d'affichage sur le besoin de base.