0Pricing
Python Academy · Lekcja

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.args służy do parametrów zapytań, a request.form do pól formularza
  • request.get_json() służy do treści JSON, a request.files do 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

  1. Trasy i widoki
  2. Szablony z Jinja2
  3. Formularze i dane żądań
  4. Budowanie endpointu REST
← Powrót do Python Academy