Flask-View-Funktionen

View-Funktionen sind der Kernbestandteil einer Flask-Anwendung; sie verarbeiten Anfragen und erzeugen Antworten.

View-Funktionen sind eng mit dem Routing verbunden und verwenden Routen, um URLs bestimmten View-Funktionen zuzuordnen.

Das Folgende ist eine ausführliche Erläuterung der Flask-View-Funktionen, einschließlich der Definition, der Verwendung von Anfragedaten, der Rückgabe von Antworten und der Fehlerbehandlung.

  1. View-Funktion definieren: View-Funktionen sind die Kernfunktionalität, die Anfragen verarbeitet und Antworten zurückgibt.
  2. Anfragedaten empfangen: VerwendenrequestVerwenden Sie das Objekt, um URL-Parameter, Formulardaten, Abfrageparameter und so weiter zu erhalten.
  3. Eine Antwort zurückgeben: Kann Zeichenfolgen, HTML, JSON oder benutzerdefinierte Antwortobjekte zurückgeben.
  4. Anfragen und Antworten verarbeiten: VerwendenrequestObjekt undmake_responseWird verwendet, um Anfragen zu verarbeiten und benutzerdefinierte Antworten zu generieren.
  5. Fehler behandeln: Behandeln Sie Ausnahmen innerhalb von View-Funktionen oder verwenden Sie den Fehlerbehandlungsmechanismus von Flask.
  6. Dekoratoren für View-Funktionen: Verwenden@app.before_request、@app.after_requestDekoratoren behandeln Logik vor und nach Anfragen.
  7. Von View-Funktionen zurückgegebene StatuscodesHTTP-Statuscodes können angegeben werden, um das Ergebnis der Anfrageverarbeitung anzugeben.

1. View-Funktionen definieren

Eine View-Funktion ist eine gewöhnliche Python-Funktion, die Anfragen entgegennimmt und Antworten zurückgibt. View-Funktionen werden normalerweise zusammen mit Routen verwendet, wobei URLs über Dekoratoren View-Funktionen zugeordnet werden.

Beispiel

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello, World!'

  • @app.route('/'): Die Root-URL zuordnen/aufhomedie View-Funktion.
  • def home()View-Funktion, gibt eine Zeichenfolge zurück'Hello, World!'als Antwort.

2. Request-Daten empfangen

View-Funktionen können verschiedene Arten von Request-Daten empfangen, darunter URL-Parameter, Formulardaten, Query-Parameter usw.

URL-Parameter abrufen:

Beispiel

@app.route('/greet/<name>')
def greet(name):
    return f'Hello, {name}!'
  • <name>ist ein URL-Parameter, der an die View-Funktion übergeben wird.greet。

Formulardaten abrufen:

Beispiel

from flask import request

@app.route('/submit', methods=['POST'])
def submit():
    username = request.form.get('username')
    return f'Form submitted by {username}!'

request.form.get('username'): Ruft das Feld username aus den Formulardaten in einer POST-Anfrage ab.

Query-Parameter abrufen:

Beispiel

@app.route('/search')
def search():
    query = request.args.get('query')
    return f'Search results for: {query}'

request.args.get('query'): Ruft den Query-Parameter query aus einer GET-Anfrage ab.

3. Antwort zurückgeben

View-Funktionen können mehrere Arten von Antworten zurückgeben, darunter Zeichenketten, HTML, JSON oder benutzerdefinierte Antwortobjekte.

String zurückgeben:

Beispiel

@app.route('/message')
def message():
    return 'This is a simple message.'

HTML-Vorlagen zurückgeben:

Beispiel

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html', name=name)

render_template('hello.html', name=name)Rendern Sie die HTML-Vorlage hello.html und übergeben Sie die Variable name an die Vorlage.

JSON-Daten zurückgeben:

Beispiel

from flask import jsonify

@app.route('/api/data')
def api_data():
    data = {'key': 'value'}
    return jsonify(data)

jsonify(data)Konvertieren Sie ein Python-Dictionary in eine JSON-Antwort.

Benutzerdefinierte Antwortobjekte zurückgeben:

Beispiel

from flask import Response

@app.route('/custom')
def custom_response():
    response = Response('Custom response with headers', status=200)
    response.headers['X-Custom-Header'] = 'Value'
    return response

Response('Custom response with headers', status=200): Erstellen Sie ein benutzerdefiniertes Antwortobjekt und legen Sie Antwort-Header fest.

4. Anfragen und Antworten verarbeiten

View-Funktionen können auf das Request-Objekt zugreifen und Antworten basierend auf Anfragedaten generieren. Sie können das Request-Objekt verwenden, um Anfrageinformationen abzurufen, und make_response, um benutzerdefinierte Antworten zu erstellen.

Verwendung des Request-Objekts:

Beispiel

from flask import request

@app.route('/info')
def info():
    user_agent = request.headers.get('User-Agent')
    return f'Dein User-Agent ist {user_agent}'

request.headers.get('User-Agent'): Rufen Sie die User-Agent-Informationen aus den Request-Headern ab.

Verwenden Sie make_response:

Beispiel

from flask import make_response

@app.route('/header')
def custom_header():
    response = make_response('Antwort mit benutzerdefiniertem Header')
    response.headers['X-Custom-Header'] = 'Value'
    return response

make_response('Response with custom header'): Erstellen Sie ein Response-Objekt und legen Sie benutzerdefinierte Header-Informationen fest.

5. Fehler behandeln

Ausnahmen können innerhalb von View-Funktionen behandelt werden, oder Fehler können mithilfe des Fehlerbehandlungsmechanismus von Flask behandelt werden.

Fehler in View-Funktionen behandeln:

Beispiel

@app.route('/divide/<int:x>/<int:y>')
def divide(x, y):
    try:
        result = x / y
        return f'Ergebnis: {result}'
    except ZeroDivisionError:
        return 'Fehler: Division durch Null', 400

Verwenden Sie eine try-except-Anweisung, um Fehler durch Division durch Null zu behandeln und eine benutzerdefinierte Fehlermeldung und einen Statuscode zurückzugeben.

Globale Fehlerbehandlung:

Beispiel

@app.errorhandler(404)
def not_found(error):
    return 'Page not found', 404

@app.errorhandler(404): Definieren Sie eine Funktion, die 404-Fehler behandelt.

6. Dekoratoren für View-Funktionen

Neben @app.route unterstützt Flask auch andere Dekoratoren, um komplexere Funktionalität zu implementieren.

Beispiel:

  • @app.before_requestFunktionen, die vor der Verarbeitung jeder Anfrage ausgeführt werden.
  • @app.after_requestFunktionen, die nach der Verarbeitung jeder Anfrage ausgeführt werden.
  • @app.teardown_requestFunktionen, die nach Beendigung der Anfrage ausgeführt werden und zur Bereinigung dienen.

Beispielhafte Dekoratorverwendung:

Beispiel

@app.before_request
def before_request():
    print('Before request')

@app.after_request
def after_request(response):
    print('After request')
    return response

@app.teardown_request
def teardown_request(exception):
    print('Teardown request')

7. Von View-Funktionen zurückgegebene Statuscodes

View-Funktionen können nicht nur Inhalte zurückgeben, sondern auch HTTP-Statuscodes angeben.

Beispiel

@app.route('/status')
def status():
    return 'Everything is OK', 200

Das Zurückgeben des Statuscodes 200 zeigt eine erfolgreiche Anfrage an.

Geben Sie ein Antwortobjekt mit einem Statuscode zurück:

Beispiel

from flask import Response

@app.route('/error')
def error():
    return Response('An error occurred', status=500)

Das Zurückgeben des Statuscodes 500 zeigt einen internen Serverfehler an.

Weitere Erweiterungen