Flask Academy · Lekcja

Renderowanie i wysyłanie formularza

Wyświetlaj pola w szablonie i obsługuj wysłanie formularza.

Lekcja 2 z 413 kroki

Renderowanie i wysyłanie formularza to bezpłatna lekcja Flask Academy na CoddyKit. To lekcja 2 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 Flask Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Flask Academy zawiera 4 lekcji w sumie.

Od klasy do strony

Klasa formularza jest bezużyteczna, dopóki użytkownik nie może jej zobaczyć. Teraz wyrenderujesz te pola do HTML i przyjmiesz przesłane dane. 🖋️

Przekazywanie formularza do szablonu

Utwórz formularz w widoku i przekaż go do render_template. Szablon otrzyma aktywny obiekt zawierający pola, które może wyrenderować.

form = LoginForm()
return render_template('login.html', form=form)

Otwieranie znacznika formularza

W Jinja zacznij od znacznika HTML form z ustawioną metodą post. Informuje to przeglądarkę, że ma wysłać wartości pól w treści żądania.

<form method="post">
  ...
</form>

Renderowanie ukrytego znacznika

Najpierw wywołaj form.hidden_tag() wewnątrz formularza. Spowoduje to dodanie tokenu CSRF wymaganego do zaakceptowania żądania post.

<form method="post">
  {{ form.hidden_tag() }}
</form>

Renderowanie pola

Każde pole renderuje się po jego wywołaniu. Użyj field.label jako tekstu, a samego pola jako elementu wejściowego.

{{ form.username.label }}
{{ form.username() }}

Przekazywanie atrybutów HTML

Wywołanie pola przyjmuje argumenty nazwane, które stają się atrybutami HTML. Można dodać class lub placeholder bezpośrednio w szablonie.

{{ form.username(class="input", placeholder="Your name") }}

Renderowanie przycisku przesyłania

Pole przesyłania renderuje przycisk. Wywołanie form.submit() tworzy element input, który przesyła cały formularz.

{{ form.submit() }}

Zezwalanie na POST w trasie

Domyślnie trasa odpowiada tylko na GET. Wymień methods, aby ten sam widok mógł wyświetlać stronę i odbierać żądania post.

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()

Odczytywanie przesłanych danych

Po żądaniu post każde pole udostępnia atrybut .data zawierający wpisaną wartość, już przekonwertowaną na właściwy typ Pythona.

username = form.username.data
password = form.password.data

Automatyczne uzupełnianie po ponownym załadowaniu

Flask-WTF automatycznie wypełnia pola danymi z żądania. Jeśli po żądaniu post wyrenderujesz formularz ponownie, dane użytkownika pozostaną w polach.

form = LoginForm()  # picks up posted data on POST

Jeden szablon, obie metody

Pojedynczy widok obsługuje GET i POST: tworzy formularz, przetwarza go po żądaniu post, a w przeciwnym razie renderuje ponownie tę samą stronę.

form = LoginForm()
if form.is_submitted():
    pass  # handle data
return render_template('login.html', form=form)

Szybkie sprawdzenie

Co należy wyrenderować wewnątrz formularza, aby dołączyć token CSRF?

Podsumowanie

Wyrenderowałeś pola z etykietami i atrybutami, dodałeś hidden_tag dla CSRF, zezwoliłeś na POST i odczytałeś wartości z atrybutu .data każdego pola. 🎉

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Renderowanie i wysyłanie formularza” jest bezpłatna?

Tak — pełny tekst „Renderowanie i wysyłanie formularza” 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 Flask Academy, przejdź na CoddyKit PRO. Kurs Flask Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Renderowanie i wysyłanie formularza”?

Wyświetlaj pola w szablonie i obsługuj wysłanie formularza. Ćwiczysz Flask 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ąć Flask Academy?

Nie wymagamy żadnego doświadczenia. Flask 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 2 z 4.

Ile czasu zajmuje lekcja „Renderowanie i wysyłanie formularza”?

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 Flask Academy?

Tak. Każda lekcja Flask 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. Definiowanie klasy FlaskForm
  2. Renderowanie i wysyłanie formularza
  3. validate_on_submit i tokeny CSRF
  4. Własne walidatory i błędy pól
← Powrót do Flask Academy