Beim Erstellen einer WEB-Anwendung mit Flask, einem Webframework von Python, nimmt die Anzahl der Zeilen in der Flask-Datei tendenziell zu, sodass ich die Dateiaufteilung in Betracht gezogen habe. Es scheint, dass das Teilen von Dateien mit Brueprint in Flask üblich ist, und dieses Mal habe ich Blueprint verwendet, um die Datei zu teilen.
├── main.py
├── COMP_A
│ └── func_A.py
├── COMP_B
│ └── func_B.py
└── templates
├── COMP_A
│ ├── index_A_1.html
│ └── index_A_2.html
└── COMP_B
├── index_B_1.html
└── index_B_2.html
Das Hauptprogramm ist main.py. Außerdem wird angenommen, dass es Komponenten A und B gibt. Func_A.py und func_B.py in jeder Komponente sind Dateien, die Flask verwenden.
In flask wird die HTML-Datei unter der Vorlage gespeichert. Diesmal wurde jedoch ein Verzeichnis für jede Komponente unter der Vorlage erstellt und die HTML-Datei gespeichert.
func_A.py
from flask import render_template
from flask import Blueprint
bpa = Blueprint('bpa', __name__, url_prefix='/A')
@bpa.route('/a1')
def app_a1():
return render_template('COMP_A/index_A_1.html')
#return "hello A a1"
@bpa.route('/a2')
def app_a2():
return render_template('COMP_A/index_A_2.html')
#return "hello A a2"
func_B.py
from flask import render_template
from flask import Blueprint
bpb = Blueprint('bpb', __name__, url_prefix='/B')
@bpb.route('/b1')
def app_b1():
return render_template('COMP_B/index_B_1.html')
#return "hello B b1"
@bpb.route('/b2')
def app_b2():
return render_template('COMP_B/index_B_2.html')
#return "hello B b2"
main.py
from flask import Flask
app = Flask(__name__)
from COMP_A.func_A import bpa
from COMP_B.func_B import bpb
@app.route('/')
def index():
return 'Hello main'
app.register_blueprint(bpa)
app.register_blueprint(bpb)
if __name__ == '__main__':
app.debug = True
app.run(host='127.0.0.1',port=60000)
Ursprünglich ist die Funktion für die von Flask generierte App registriert (name). Bei einer Funktion in einer anderen Datei wird Brueprint jedoch mit register_blueprint in der App registriert. Vergessen Sie zu diesem Zeitpunkt nicht, im Voraus eine andere Funktion Brueprint zu importieren.
Geben Sie in der URL Folgendes an
127.0.0.1:60000/ #main.py index()
127.0.0.1:60000/A/a1 #func_A.py app_a1()
127.0.0.1:60000/A/a2 #func_A.py app_a2()
127.0.0.1:60000/B/b1 #func_B.py app_b1()
127.0.0.1:60000/B/b2 #func_B.py app_b2()
Beachten Sie, dass die URL eine Kombination aus Präfix, wenn Brueprint angegeben ist, und Pfad, wenn @ xxx.route definiert ist.
--Dateiaufteilung mit Modul Es scheint eine Möglichkeit zu geben, die Datei mit flask.module zu teilen. Überlegen Sie das nächste Mal.
return redirect(url_for('bpb.b2'))
Recommended Posts