226
Rozdział 5.
Gdzie są dane?
Dostęp do danych formularza HTML za pomocą Flaska
Nasza aplikacja nie zgłasza już błędu niedozwolonej metody („Method Not Allowed”). Zamiast
tego mamy inny problem, polegający na tym, że zawsze zwraca ona ten sam zestaw znaków:
i,
przecinek, r oraz e. Jeśli tylko spojrzysz w kod, który jest wykonywany, gdy odwołujesz się do
URL-a
/search4
, szybko odkryjesz powód tego dziwnego zachowania. Jest to spowodowane tym,
że wartości argumentów
phrase
i
letters
są zapisane na sztywno (ang. hardcoded) w wywołaniu
funkcji
search4letters
.
...
@app.route(‘/search4’, methods=[‘POST’])
def do_search() -> str:
return str(search4letters(‘życie, wszechświat i cała reszta’, ‘eiru,!’))
...
Nieważne, co wpiszemy
w formularzu HTML, nasz kod
zawsze będzie używał tych
zapisanych na sztywno wartości.
Dane z tego elementu
formularza są dostępne
w kodzie naszej
aplikacji WWW jako
request.form[‘phrase’].
Dane z tego elementu formularza
są dostępne w kodzie
naszej aplikacji WWW jako
request.form[‘letters’].
Szablon HTML (zapisany
w pliku entry.html)
Wyrenderowany formularz
w naszej przeglądarce
internetowej
Nasz formularz HTML przesyła swoje dane do serwera WWW, ale aplikacja po prostu je
ignoruje. Aby zrobić z nich użytek, powinniśmy zmienić kod naszej aplikacji WWW w taki
sposób, aby przyjmowała dane, a następnie przeprowadzała na nich jakąś operację.
Framework Flask oferuje wbudowany obiekt o nazwie
request
, który zapewnia dostęp do
przesłanych danych. Obiekt ten zawiera słownikowy atrybut o nazwie
form
, który oferuje
z kolei dostęp do danych formularza HTML przekazanych przez przeglądarkę. Jako że
form
jest zwykłym słownikiem Pythona, obsługuje standardową notację nawiasów kwadratowych,
którą poznałeś w
rozdziale 3
. Aby odwołać się do jakiejś danej pochodzącej z formularza,
po prostu umieść nazwę odpowiedniego elementu w nawiasach kwadratowych.
{% extends ‘base.html’ %}
{% block body %}
<h2>{{ the_title }} </h2>
<form method=’POST’ action=’/search4’>
<table>
<p> Użyj tego formularza, aby określić parametry wyszukiwania:</p>
<tr><td>Fraza:</td><td><input name=’phrase’ type=’TEXT’
width=’60’></td></tr>
<tr><td>Litery:</td><td><input name=’letters’ type=’TEXT’
value=’aeiou’></td></tr>
</table>
<p> Gdy będziesz gotów, kliknij ten przycisk:</p>
<p><input value=’Zrób to!’ type=’SUBMIT’></p>
</form>
{% endblock %}
Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.