Formularze i dane żądań
Przetwarzaj dane wprowadzane przez użytkownika
Formularze i dane żądań to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Obiekt request
Flask udostępnia każdemu widokowi globalny obiekt request, który zawiera wszystkie przychodzące dane: pola formularzy, parametry zapytań, JSON, nagłówki i inne informacje.
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')Parametry zapytania
Dane występujące po znaku ? w adresie URL znajdują się w obiekcie request.args. Użyj .get(), aby bezpiecznie odczytać wartość.
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
term = request.args.get('q', '')
return 'Searching for ' + term
print('/search?q=cats -> request.args')Formularz HTML
Formularz wysyła dane po przesłaniu. Atrybuty method i action określają sposób i miejsce wysłania danych.
# <form method='POST' action='/login'>
# <input name='username'>
# <input name='password' type='password'>
# <button>Submit</button>
# </form>
print('Form posts username and password')Odczytywanie danych formularza
Przesłane pola formularza trafiają do obiektu request.form. Uzyskuj do nich dostęp za pomocą atrybutu name elementu wejściowego.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form['username']
return 'Welcome ' + user
print('request.form holds posted fields')Bezpieczny dostęp za pomocą get
Użycie request.form['x'] powoduje zgłoszenie wyjątku, jeśli brakuje klucza. Lepiej użyć request.form.get('x'), które zamiast tego zwraca None.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form.get('username')
if not user:
return 'Missing username', 400
return 'Welcome ' + user
print('.get avoids KeyError')GET i POST w jednym widoku
Typowy wzorzec polega na wyświetleniu formularza przy żądaniu GET i przetworzeniu danych przy żądaniu POST, w ramach jednego widoku.
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
return 'Thanks, ' + request.form.get('name', 'friend')
return render_template('contact.html')
print('One view, two methods')Sprawdzanie danych wejściowych
Nigdy nie należy ufać danym wprowadzanym przez użytkownika. Przed ich użyciem sprawdź, czy wymagane pola istnieją i zawierają sensowne wartości.
from flask import Flask, request
app = Flask(__name__)
@app.route('/age', methods=['POST'])
def age():
raw = request.form.get('age', '')
if not raw.isdigit():
return 'Age must be a number', 400
return 'Age is ' + raw
print('Validate before trusting input')Odczytywanie danych JSON
Klienci interfejsów API często wysyłają dane JSON. request.get_json() analizuje treść żądania i przekształca ją w słownik Pythona.
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['POST'])
def api():
data = request.get_json()
return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')Przesyłanie plików
Przesłane pliki znajdują się w obiekcie request.files. Zapisz plik za pomocą jego metody .save() po uprzednim sprawdzeniu go.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files.get('photo')
if f:
return 'Received ' + f.filename
return 'No file', 400
print('request.files holds uploads')Przekierowanie po POST
Po obsłużeniu formularza przekieruj użytkownika, aby uniknąć ponownego wysłania danych po odświeżeniu strony. Użyj redirect(url_for(...)).
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/done')
def done():
return 'All done'
@app.route('/save', methods=['POST'])
def save():
return redirect(url_for('done'))
print('Post/Redirect/Get pattern')Komunikaty flash
flash() przechowuje jednorazowy komunikat wyświetlany po przekierowaniu, co świetnie nadaje się do potwierdzeń, takich jak „Zapisano pomyślnie”.
from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'
@app.route('/save', methods=['POST'])
def save():
flash('Saved successfully')
return redirect(url_for('save'))
print('flash shows a one-time message')Szybki sprawdzian
Sprawdź swoją wiedzę na temat obsługi formularzy.
Podsumowanie
Nauczył się Pan/Nauczyła się Pani przetwarzać dane użytkownika we Flasku.
request.argssłuży do parametrów zapytań, arequest.formdo pól formularzarequest.get_json()służy do treści JSON, arequest.filesdo przesyłanych plików- Zawsze sprawdzaj dane wejściowe i używaj
.get(), aby bezpiecznie uzyskiwać dostęp do wartości - Używaj wzorca Post/Redirect/Get oraz
flash(), aby zapewnić wygodną obsługę formularzy
Często zadawane pytania
Czy lekcja „Formularze i dane żądań” jest bezpłatna?
Tak — pełny tekst „Formularze i dane żądań” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Formularze i dane żądań”?
Przetwarzaj dane wprowadzane przez użytkownika Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Formularze i dane żądań”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Trasy i widoki
- Szablony z Jinja2
- Formularze i dane żądań
- Budowanie endpointu REST