Routing w Flask: URL i funkcje obsługi
Od HTTP- żądania do wywołania funkcji - Flask. urządzenie routingu
Rozdział 22.5 już pokazał @app.route("/") — ale co dokładnie
Flask to robi z tym dekoratorem? Przyjrzyjmy się całej ścieżce pojedynczego żądania wewnątrz aplikacji.
Każde wyzwanie @app.route(...) rejestry
rządy (URL rule) to na przykład sam szablon ścieżki
/task/<int:task_id>. Całość wszystkich reguł nazywana jest
trasowanie (routing). Każda zasada również
punkt końcowy (endpoint) to symboliczna nazwa, pod którą Flask zna powiązaną
funkcja: domyślnie jest to nazwa samej funkcji. Przez końcowy, a nie przez URL bezpośrednio,
url_for(...) tworzy adres — pozwala to zmienić samą ścieżkę, bez
dotykając kodu, który się do niego odnosi. Gdy nadejdzie żądanie, Flask przeszukuje
Zarejestrowana reguła, która odpowiada ścieżce i metodzie oraz wywołuje powiązane
funkcję-obslugę – już widzieliście ten mechanizm w sekcji 22.5, po prostu
Bez tytułów.
Parametr ścieżki to typowa część URL
Część ścieżki w nawiasach kątowych Flask przekazuje funkcji jako argument. Możesz ją określić Oczekiwany typ jest zgodny z regułą:
@app.route("/task/<int:task_id>")
def poluchit_zadachu(task_id):
return f"Zadanie nr {{task_id}}"
/task/abc, Flask nie spowoduje poluchit_zadachu() ogólnie to reguła <int:task_id> wymaga liczby całkowitej, a żądanie otrzyma standardową odpowiedź 404 (sekcja 22.9) zanim dotrze do kodu.Funkcja obsługiwa zwraca treść odpowiedzi
To, co zwraca funkcja, staje się ciałem HTTP-odpowiedzi: łańcuch znaków, renderowany szablon (rozdział 22.12) lub na przykład słownik — taki słownik Flask przekształca w JSON (rozdziały 22.15-22.16). Dlatego kontrolery nazywają funkcjami widoku (view functions): ich zadaniem jest przygotowanie widoku danych dla konkretnego zapytania.