Blog JSystems - uwalniamy wiedzę!

Szukaj
Framework Flask - obsługa formularzy

Do obsługi formularza potrzebne będą dwa elementy. Jeden dbający o to co się ma stać gdy wejdziemy na formularz (GET), oraz co się ma stać gdy formularz zatwierdzimy (POST). Funkcja na potrzeby wyświetlenia formularza nie odbiega od wcześniej tworzonych i sprowadza się do wyświetlenia strony html:

Kod w edytorze PyCharm 2025.3 (interpreter Python 3.14)

Kod z powyższego zrzutu (do skopiowania):

@app.route("/addProduct")
def addProduct():
    return render_template("addProduct.html")

Musimy zrobić również formularz w HTML:

Kod w edytorze PyCharm 2025.3 (interpreter Python 3.14)

Kod z powyższego zrzutu (do skopiowania):

<form method="POST">
    <table>
        <tr>
            <td>Nazwa</td>
            <td><input type="text" name="name"/></td>
        </tr>
        <tr>
            <td>Opis</td>
            <td><input type="text" name="desc"/></td>
        </tr>
    </table>
    <input type="submit" value="Wyślij"/>
</form>

Tutaj również nie ma nic nadzwyczajnego, ot zwykły formularz w HTML. Zwróć jednak uwagę na atrybut „name” obu inputów. Po tych właśnie nazwach będziemy odbierać dane na poziomie kontrolera. Ciekawsze rzeczy znajdują się w obsłudze zatwierdzenia formularza:

Kod w edytorze PyCharm 2025.3 (interpreter Python 3.14)

Kod z powyższego zrzutu (do skopiowania):

@app.route("/addProduct", methods=['POST'])
def addProductPost():
    nazwa=request.form['name']
    opis=request.form['desc']
    print(f"nazwa={nazwa}, opis={opis}")
    return render_template("addProduct.html")

Pierwsza różnica ujawnia się w linii 11. Dochodzi nam dodatkowy argument „methods”. Dodajemy go by Flask wiedział kiedy ta funkcja ma zostać wywołana. Domyślną wartością jest „GET”. Dalej dzięki słownikowi „form” zawartym w obiekcie request (który trzeba zaimportować jak wcześniej) odczytuję na podstawie nazw inputów dane z formularza. Dalej (linie 15-16) wyświetlam na konsoli odczytane wartości i ponownie prezentuję formularz.

91.png (338×165)

Konsola:

92.png (571×50)

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...