Einführung
Moderne Webanwendungen verwenden sinnvolle URLs, um den Benutzern zu helfen. Benutzer sind eher geneigt, eine Seite zu mögen und wiederzukommen, wenn die Seite eine sinnvolle URL verwendet, die sie sich merken und direkt zur Seite verwenden können. In diesem Lab werden wir uns auf die Implementierung dynamischer URLs und die Anheftung mehrerer Regeln an eine Funktion in Flask konzentrieren.
Route Dekorator
In diesem Schritt verwenden Sie den route()-Dekorator, um mehrere Ansichtsfunktionen mit mehreren URLs zu binden.
- Öffnen Sie die Datei
route_decorator.py, importieren Sie dieFlask-Klasse und erstellen Sie eine Instanz davon.
from flask import Flask
app = Flask(__name__)
- Als nächstes verwenden wir den
route()-Dekorator, um zwei Routen,/und/hello, zu erstellen, die entsprechende Ansichtsfunktionen binden, sodass sie jeweils Index Seite und Hallo Welt zurückgeben.
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
- Erstellen Sie einen
main-Eintrittspunkt des Skripts, um die Flask-Anwendung am Port 5000 zu starten und dendebug-Modus zu aktivieren.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True)
- Um die Anwendung auszuführen, verwenden Sie zunächst die folgenden Befehle, um die Flask-Anwendung in der Konsole zu starten:
python3 route_decorator.py
Öffnen Sie dann die Registerkarte „Web 5000“ oben in der Schnittstelle, aktualisieren Sie die Seite, und Sie können die Nachricht Index Seite sehen.
Für die Route /hello können Sie das Suffix hello direkt in der Adressleiste oben hinzufügen.

Dann wird die Seite die Nachricht Hallo Welt anzeigen.
Variable Regeln
In diesem Schritt fügen Sie variable Abschnitte zu einer URL hinzu, indem Sie Abschnitte mit <variable_name> markieren. Optionalerweise können Sie einen Konverter verwenden, um den Typ des Arguments anzugeben, wie <converter:variable_name>.
- Öffnen Sie die Datei
variable_rules.py, importieren Sie zunächst dieFlask-Klasse undescape, und erstellen Sie dann eine Instanz derFlask-Klasse.
from flask import Flask
from markupsafe import escape
app = Flask(__name__)
- Im
route()-Dekorator fügen Sie Muster wie<variable_name>und<converter:variable_name>hinzu, um dynamische URLs mit variablen Abschnitten zu erstellen. Lassen Sie die Ansichtsfunktionen formatierte Strings zurückgeben.
@app.route('/user/<username>')
def show_user_profile(username):
## Zeigt das Benutzerprofil für diesen Benutzer an
return f'User {escape(username)}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
## Zeigt den Beitrag mit der angegebenen ID an, die ID ist eine Ganzzahl
return f'Post {post_id}'
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
## Zeigt den Unterpfad nach /path/ an
return f'Subpath {escape(subpath)}'
- Im folgenden ist eine Tabelle mit den gängigsten Konvertierungstypen:
| Typ | Rolle |
|---|---|
string |
(Standard) akzeptiert beliebigen Text ohne Schrägstrich |
int |
akzeptiert positive ganze Zahlen |
float |
akzeptiert positive Gleitkommazahlen |
path |
wie string, akzeptiert jedoch auch Schrägstriche |
uuid |
akzeptiert UUID-Strings |
- Erstellen Sie einen
main-Eintrittspunkt des Skripts, um die Flask-Anwendung am Port 5001 zu starten und dendebug-Modus zu aktivieren.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5001, debug=True)
- Um die Anwendung auszuführen, verwenden Sie zunächst die folgenden Befehle, um die Flask-Anwendung in einem neuen Terminal zu starten:
python3 variable_rules.py
Öffnen Sie dann die Registerkarte „Web 5001“ oben in der Schnittstelle und fügen Sie das Suffix user/Alice direkt in die obere Adressleiste hinzu.

Dann wird die Seite die Nachricht User Alice anzeigen.
- Sie können auch die gleichen Vorgänge für die Suffixe
post/1undpath/some/pathwiederholen. Für das Suffixpost/1wird die Nachricht Post 1 angezeigt. Für das Suffixpath/some/pathwird die Nachricht Subpath some/path angezeigt.
Umleitungsverhalten
In diesem Schritt lernen Sie zwei Regeln, die sich in ihrer Verwendung eines abschließenden Schrägstriches unterscheiden.
- Öffnen Sie die Datei
redirection_behavior.py, importieren Sie dieFlask-Klasse und erstellen Sie eine Instanz davon.
from flask import Flask
app = Flask(__name__)
- Verwenden Sie den
route()-Dekorator, um eine Route namens/projects/mit einer Ansichtsfunktion namensprojectszu erstellen.
@app.route('/projects/')
def projects():
return 'The project page'
Die kanonische URL für den projects-Endpunkt hat einen abschließenden Schrägstrich. Es ähnelt einem Ordner im Dateisystem. Wenn Sie die URL ohne abschließenden Schrägstrich (/projects) aufrufen, leitet Flask Sie zur kanonischen URL mit abschließendem Schrägstrich (/projects/).
- Erstellen Sie eine weitere Route namens
/aboutmit einer Ansichtsfunktion namensabout.
@app.route('/about')
def about():
return 'The about page'
Die kanonische URL für den about-Endpunkt hat keinen abschließenden Schrägstrich. Es ähnelt dem Dateinamen einer Datei. Das Aufrufen der URL mit einem abschließenden Schrägstrich (/about/) führt zu einem 404 Not Found-Fehler. Dies hilft, URLs für diese Ressourcen eindeutig zu halten, was hilft, dass Suchmaschinen dieselbe Seite nicht zweimal indizieren.
- Erstellen Sie einen
main-Eintrittspunkt des Skripts, um die Flask-Anwendung am Port 5002 zu starten und dendebug-Modus zu aktivieren.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5002, debug=True)
- Um die Anwendung auszuführen, verwenden Sie zunächst die folgenden Befehle, um die Flask-Anwendung in einem neuen Terminal zu starten:
python3 redirection_behavior.py
Öffnen Sie dann die Registerkarte „Web 5002“ oben in der Schnittstelle und fügen Sie das Suffix projects direkt in die obere Adressleiste hinzu.

Dann wird die Seite die Nachricht The project page anzeigen, da sie zur Route /projects/ weitergeleitet wird.
Fügen Sie anstelle von projects ein weiteres Suffix about/ hinzu:

Sie sollten die Nachricht Not Found sehen, was einen 404-Fehler angibt. Ändern Sie das Suffix in about, dann kann es die richtige Nachricht The about page anzeigen.
URL - Aufbau
In diesem Schritt verwenden Sie die url_for()-Funktion, um eine URL zu einer bestimmten Funktion zu erstellen. Sie akzeptiert als erstes Argument den Namen der Funktion und beliebig viele Schlüsselwortargumente, wobei jedes einem variablen Teil der URL-Regel entspricht. Unbekannte variable Teile werden als Suchparameter an die URL angehängt.
- Öffnen Sie die Datei
url_building.py, importieren Sie zunächst dieFlask-Klasse undurl_for. Vergessen Sie auch nicht, eine Instanz derFlask-Klasse zu erstellen.
from flask import Flask, url_for
app = Flask(__name__)
- Verwenden Sie den
route()-Dekorator, um drei Routen zu erstellen und entsprechende Ansichtsfunktionen zu definieren.
@app.route('/')
def index():
return 'index'
@app.route('/login')
def login():
return 'login'
@app.route('/user/<username>')
def profile(username):
return f'{username}\'s profile'
- Wir verwenden die
test_request_context()-Methode, umurl_for()auszuprobieren. Sie veranlasst Flask, so zu verhalten, als ob es eine Anfrage verarbeitet, auch wenn wir eine Python-Shell verwenden.
with app.test_request_context():
print(url_for('index'))
print(url_for('login'))
print(url_for('login', next='/'))
print(url_for('profile', username='John Doe'))
url_for('index')generiert eine URL für die Ansichtsfunktionindex, was zu/führt.url_for('login')generiert eine URL für die Ansichtsfunktionlogin, was zu/loginführt.url_for('login', next='/')generiert eine URL für die Ansichtsfunktionloginund enthält einen zusätzlichen Suchparameternext, was zu/login?next=/führt.url_for('profile', username='John Doe')generiert eine URL für die Ansichtsfunktionprofilemit der Benutzernamen-Variable aufJohn Doegesetzt, was zu/user/John%20Doeführt
- Führen Sie die Datei
url_building.pydirekt in einem neuen Terminal aus:
python3 url_building.py
Es sollte folgendes ausgeben:
/
/login
/login?next=/
/user/John%20Doe
Zusammenfassung
In diesem Lab haben wir verschiedene Methoden gelernt, um sinnvolle URLs zu erstellen, was sehr wichtig ist, wenn wir eine Webanwendung entwerfen. Indem Sie die Routenfunktionen von Flask geschickt nutzen, können Sie organisierte und intuitive URLs erstellen, die die Benutzererfahrung verbessern.



