[PYTHON] Ordnen Sie Controller automatisch URLs mit Flask zu

Flask erfordert eine explizite Zuordnung von URLs und Methoden, wie unten gezeigt.

# '/'Rufen Sie die Indexmethode auf, wenn auf sie zugegriffen wird
@app.route("/"):
def index():
    return "<h1>Hello, World!</h1>"

Beispiel: So erstellen Sie ein Formular, das beim Zugriff auf "/ Hello / index" automatisch die Indexmethode des Hello-Controllers (Stil wie Rails oder CakePHP) aufruft.

Verzeichnisaufbau

Skript

app.py


from flask import Flask
import importlib

app = Flask(__name__)

@app.route("/<path:path>")
def router(path):
    path = path.split("/")
    module_name = "Controller." + path[0]
    module = importlib.import_module(module_name)
    method = getattr(module, path[1])
    return method()

Controller/Hello.py


def index():
    return "<h1>Hello, Controller!</h1>"

Wenn Sie im Routendekorator "\ <Pfad: Pfad>" angeben, wird der angeforderte Pfad als Zeichenfolge im variablen Pfad gespeichert. Der Pfad danach ist ein Variablenname, sodass Sie einen beliebigen Namen eingeben können (z. B. \ <path: mypath>).

Da das erste Element des Arrays, das dies mit "/" teilt, der Controller-Name ist, verwenden Sie import_module von importlib, um den Pfad zum Controller als Zeichenfolge anzugeben und den Controller abzurufen.

Verwenden Sie schließlich getattr, um die tatsächliche Methode aus der Methodennamenzeichenfolge abzurufen und zurückzugeben.

Serpentin

Jetzt können Sie den Controller implizit angeben, ohne ihn explizit anzugeben! Du hast es geschafft! !!

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
...

Das ist gegen Pythons Philosophie \ (^ o ^) /

Recommended Posts

Ordnen Sie Controller automatisch URLs mit Flask zu
Versuchen Sie, Blueprint with Flask zu verwenden, um Controller zu trennen
Laden Sie Bilder von der URL mit Pillow in Python 3
Lesen Sie die Protokollierungseinstellungen mit Flask aus einer externen Datei
So ändern Sie das statische Verzeichnis von der Standardeinstellung in Flask
Ändern Sie das statische Dateispeicherverzeichnis und die URL in Flask
Einführung in WebPay von Flask
Bild-Uploader mit Flasche
Ordnen Sie Controller automatisch URLs mit Flask zu
[Django] Erstellen Sie ein Formular, das automatisch die Adresse aus der Postleitzahl ausfüllt
So reflektieren Sie ImageField in Django + Docker (Kissen)
Modell in Django
Form in Django
So melden Sie sich automatisch wie 1Password von der CLI an