Sinnvolle URLs für dynamische Webanwendungen

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/keyword_arguments("Keyword Arguments") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/FileHandlingGroup -.-> python/with_statement("Using with Statement") python/AdvancedTopicsGroup -.-> python/decorators("Decorators") subgraph Lab Skills python/strings -.-> lab-148877{{"Sinnvolle URLs für dynamische Webanwendungen"}} python/function_definition -.-> lab-148877{{"Sinnvolle URLs für dynamische Webanwendungen"}} python/keyword_arguments -.-> lab-148877{{"Sinnvolle URLs für dynamische Webanwendungen"}} python/importing_modules -.-> lab-148877{{"Sinnvolle URLs für dynamische Webanwendungen"}} python/with_statement -.-> lab-148877{{"Sinnvolle URLs für dynamische Webanwendungen"}} python/decorators -.-> lab-148877{{"Sinnvolle URLs für dynamische Webanwendungen"}} end

Route-Dekorator

In diesem Schritt verwenden Sie den route()-Dekorator, um mehrere Ansichtsfunktionen mit mehreren URLs zu binden.

  1. Öffnen Sie die Datei route_decorator.py, importieren Sie die Flask-Klasse und erstellen Sie eine Instanz davon.
from flask import Flask
app = Flask(__name__)
  1. 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'
  1. Erstellen Sie einen main-Eintrittspunkt des Skripts, um die Flask-Anwendung am Port 5000 zu starten und den debug-Modus zu aktivieren.
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000, debug=True)
  1. 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.

Beispiel für den Flask-Route-Dekorator

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>.

  1. Öffnen Sie die Datei variable_rules.py, importieren Sie zunächst die Flask-Klasse und escape, und erstellen Sie dann eine Instanz der Flask-Klasse.
from flask import Flask
from markupsafe import escape
app = Flask(__name__)
  1. 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
  1. Erstellen Sie einen main-Eintrittspunkt des Skripts, um die Flask-Anwendung am Port 5001 zu starten und den debug-Modus zu aktivieren.
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5001, debug=True)
  1. 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.

Beispiel für eine dynamische Flask-URL

Dann wird die Seite die Nachricht User Alice anzeigen.

  1. Sie können auch die gleichen Vorgänge für die Suffixe post/1 und path/some/path wiederholen. Für das Suffix post/1 wird die Nachricht Post 1 angezeigt. Für das Suffix path/some/path wird die Nachricht Subpath some/path angezeigt.

Weiterleitungsverhalten

In diesem Schritt lernen Sie zwei Regeln, die sich in ihrer Verwendung eines abschließenden Schrägstriches unterscheiden.

  1. Öffnen Sie die Datei redirection_behavior.py, importieren Sie die Flask-Klasse und erstellen Sie eine Instanz davon.
from flask import Flask
app = Flask(__name__)
  1. Verwenden Sie den route()-Dekorator, um eine Route namens /projects/ mit einer Ansichtsfunktion namens projects zu 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/).

  1. Erstellen Sie eine weitere Route namens /about mit einer Ansichtsfunktion namens about.
@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.

  1. Erstellen Sie einen main-Eintrittspunkt des Skripts, um die Flask-Anwendung am Port 5002 zu starten und den debug-Modus zu aktivieren.
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5002, debug=True)
  1. 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.

Beispiel für die Flask-Projects-Route

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:

Anzeige der 404-Fehlerseite

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-Building

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.

  1. Öffnen Sie die Datei url_building.py, importieren Sie zunächst die Flask-Klasse und url_for. Vergessen Sie auch nicht, eine Instanz der Flask-Klasse zu erstellen.
from flask import Flask, url_for
app = Flask(__name__)
  1. 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'
  1. Wir verwenden die test_request_context()-Methode, um url_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 Ansichtsfunktion index, was zu / führt.
  • url_for('login') generiert eine URL für die Ansichtsfunktion login, was zu /login führt.
  • url_for('login', next='/') generiert eine URL für die Ansichtsfunktion login und enthält einen zusätzlichen Suchparameter next, was zu /login?next=/ führt.
  • url_for('profile', username='John Doe') generiert eine URL für die Ansichtsfunktion profile mit der Benutzernamen-Variable auf John Doe gesetzt, was zu /user/John%20Doe führt
  1. Führen Sie die Datei url_building.py direkt 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.