jesteś tutaj�
227
Budowanie aplikacji WWW
Używanie danych żądania w swojej aplikacji WWW
Aby skorzystać z obiektu
request
, zaimportuj go w wierszu zaczynającym się od słów
from flask
i znajdującym
się na początku kodu Twojego programu, a następnie odwołaj się do odpowiedniego elementu za pomocą
konstrukcji
request.form
zgodnie z potrzebą. W tym przypadku chodzi o zastąpienie wartości zapisanych na
sztywno w funkcji
do_search
danymi pochodzącymi z naszego formularza HTML. Dzięki temu za każdym razem,
gdy zostaną w nim zatwierdzone wartości
phrase
i
letters
, nasza aplikacja zwróci odpowiednie dla nich wyniki.
Dokonajmy odpowiednich zmian w kodzie programu. Zacznijmy od dodania obiektu
request
do listy elementów
importowanych z modułu
flask
. Aby to zrobić, zmień pierwszy wiersz kodu w pliku vsearch4web.py tak,
aby wyglądał jak poniżej.
@app.route(‘/search4’, methods=[‘POST’])
def do_search() -> str:
phrase = request.form[‘phrase’]
letters = request.form[‘letters’]
return str(search4letters(phrase, letters))
from flask import Flask, render_template, request
Dodaj obiekt request
do listy importowanych
elementów.
Utwórz
dwie nowe
zmienne...
i przypisz do nich odpowiednie dane
pochodzące z formularza HTML...
...a następnie użyj tych
zmiennych w wywołaniu
funkcji search4letters.
Automatyczne przeładowania
Zanim zrobisz cokolwiek innego (ale już po wykonaniu przedstawionych powyżej zmian
w swoim kodzie), zapisz swój plik
vsearch4web.py, a następnie przejdź do swojego wiersza
poleceń i spójrz na komunikaty stanu wygenerowane przez Twoją aplikację WWW. Poniżej
możesz się przekonać, co my tam zobaczyliśmy (u Ciebie powinno to wyglądać podobnie).
$ python3 vsearch4web.py
* Restarting with stat
* Debugger is active!
* Debugger pin code: 228-903-465
127.0.0.1 - - [23/Nov/2015 22:39:11] "GET /entry HTTP/1.1" 200 -
127.0.0.1 - - [23/Nov/2015 22:39:11] "GET /static/hf.css HTTP/1.1" 200 -
127.0.0.1 - - [23/Nov/2015 22:17:58] "POST /search4 HTTP/1.1" 200 -
* Detected change in 'vsearch4web.py', reloading
* Restarting with stat
* Debugger is active!
* Debugger pin code: 228-903-465
Debugger frameworka
Flask wykrył
zmiany w kodzie
i zrestartował Twoją
aplikację WWW za
Ciebie. Przyznasz
chyba, że to całkiem
wygodne?
Dzięki informacjom zaprezentowanym na poprzedniej stronie wiemy już, że do danej
phrase
wprowadzonej w formularzu HTML możemy się odwołać z poziomu naszego kodu, korzystając
z konstrukcji
request.form[‘phrase’]
, a dostęp do wartości
letters
zapewni nam konstrukcja
request.form[‘letters’]
. Zmodyfikujmy funkcję
do_search
w taki sposób, aby korzystała
z tych wartości (i usuńmy zapisane na sztywno łańcuchy znakowe).
Nie wpadaj w panikę, jeśli w swoim wierszu poleceń ujrzysz coś innego. Automatyczne przeładowanie
działa wyłącznie wtedy, gdy wprowadzone przez Ciebie zmiany są prawidłowe. Jeśli w Twoim kodzie
pojawią się jakieś błędy, aplikacja WWW zacznie bombardować wiersz poleceń komunikatami błędów.
Aby ruszyć dalej, popraw błędy występujące w Twoim kodzie i zrestartuj swoją aplikację ręcznie
(naciskając klawisz
strzałki skierowanej w górę, a potem klawisz Enter).
228
Rozdział 5.
Teraz działa lepiej
Pamiętaj: pusty zbiór jest wyświetlany
jako „set()”, co oznacza, że żadna z liter
„e”, „d”, „f”, „k”, „m” nie została znaleziona
w podanej frazie.
W przekazanej frazie
występuje tylko litera „y”.
Fraza zawiera wszystkie litery
przekazane serwerowi WWW.
Teraz, gdy zmieniliśmy naszą aplikację WWW w taki sposób, aby przyjmowała (i przetwarzała) dane pochodzące
z formularza HTML, możemy wprowadzić do niego różne frazy i litery, a aplikacja powinna robić to, czego od niej
oczekujemy.
Jazda próbna
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.