254
Rozdział 6.
Jeszcze jeden URL
Przeglądanie logu za pomocą naszej aplikacji WWW
W Twojej aplikacji WWW należy teraz dodać obsługę URL-a
/viewlog
. Gdy otrzyma ona
żądanie o ten URL, powinna otworzyć plik
vsearch.log, odczytać z niego wszystkie dane,
a następnie przesłać je do oczekującej przeglądarki.
Większość rzeczy, które należy tu zrobić, już dobrze znasz. Zacznij od utworzenia pokazanego
poniżej wiersza nowego dekoratora
@app.route
(odpowiedni kod dodamy na końcu pliku
vsearch4web.py, tuż ponad wierszem dunder name dunder main).
@app.route('/viewlog')
Mamy tu całkiem
nowy URL.
Po wybraniu odpowiedniego URL-a powinniśmy napisać dla niego funkcję. Nazwijmy ją
view_the_log
. Funkcja ta nie będzie przyjmowała żadnych argumentów, ale będzie zwracała
do wywołującego kodu łańcuch znakowy, który powstanie w wyniku połączenia wszystkich
wierszy danych odczytanych z pliku
vsearch.log. Poniżej możesz zobaczyć, jak wygląda wiersz
def
naszej nowej funkcji.
def view_the_log() -> str:
Mamy też zupełnie nową
funkcję, która (zgodnie
z adnotacją) zwraca
łańcuch znakowy.
Teraz trzeba napisać zestaw tej funkcji. Należy w nim otworzyć plik logu w trybie do odczytu.
Jest to standardowy tryb funkcji
open
, dlatego w jej wywołaniu jako argument wystarczy
podać nazwę pliku. Kontekstem, w którym przetwarzany jest nasz plik, możemy zarządzać
za pomocą instrukcji
with
.
with open('vsearch.log') as log:
W obrębie zestawu instrukcji
with
powinniśmy odczytać wszystkie wiersze z pliku. Twoją
pierwszą myślą mogłoby być zastosowanie pętli do przejścia przez plik wiersz po wierszu.
Interpreter zapewnia jednak metodę
read
, która — gdy ją wywołać — zwraca całą
zawartość pliku „za jednym zamachem”. Poniżej znajdziesz pojedynczy wiersz kodu, który
załatwia sprawę, tworząc nowy łańcuch znakowy o nazwie
contents
.
Otwórz plik logu
do odczytu.
contents = log.read()
Odczytaj cały plik za „jednym
zamachem” i przypisz jego
zawartość do zmiennej (która
otrzymała nazwę „contents”).
Po odczytaniu pliku zestaw instrukcji
with
się kończy (zamykając plik), a Ty jesteś już
gotów do wysłania danych do oczekującej przeglądarki internetowej. Jak widać poniżej,
operacja ta jest bardzo prosta.
return contents
Po zebraniu wszystkiego w całość otrzymamy dokładnie to, czego
potrzebujemy, aby odpowiedzieć na żądanie dotyczące URL-a
/viewlog
.
Weź listę wierszy
przechowywanych w zmiennej
contents i zwróć ją do kodu
wywołującego.
@app.route('/viewlog')
def view_the_log() -> str:
with open('vsearch.log') as log:
contents = log.read()
return contents
To cały kod, którego
potrzebujesz, aby
zapewnić obsługę URL-a
/viewlog.
jesteś tutaj�
255
Przechowywanie danych i manipulowanie nimi
Od czasu, gdy dodaliśmy kod logujący,
wykonaliśmy trzy wyszukiwania i wygląda na to,
że mamy tu trzy zbiory wyników. Co się jednak
stało z danymi żądania? Wydaje się, że ich
tutaj brakuje?!?
Jazda próbna
Gdy dodasz i zapiszesz swój nowy kod, Twoja aplikacja WWW powinna zostać automatycznie przeładowana.
Jeśli masz ochotę, możesz wykonać kilka operacji wyszukiwania, ale te, które przeprowadziłeś, są już zalogowane.
Wszelkie nowe wyszukiwania, które wykonasz, zostaną dodane do pliku logu. Użyjmy URL-a /viewlog, aby
sprawdzić, co zostało w nim zapisane. Wpisz ciąg
http://127.0.0.1:5000/viewlog w polu adresu przeglądarki
internetowej i naciśnij klawisz
Enter
.
Poniżej możesz zobaczyć, co ujrzeliśmy, korzystając z przeglądarki
Chrome
w systemie operacyjnym
Windows
(sprawdzaliśmy również przeglądarki
Safari
oraz
Firefox
i otrzymaliśmy te same wyniki).
Od czego zacząć, gdy coś niedobrego dzieje się z danymi wyjściowymi
Jeśli Twoje dane wyjściowe nie wyglądają do końca tak, jak się tego spodziewasz (z czym mamy do czynienia
powyżej), najlepiej zacząć od sprawdzenia, jakie dokładnie dane wysyła Ci aplikacja WWW. Ważna rzecz, którą
należy odnotować, jest taka, że to, co widać na ekranie komputera, stanowi wykonany przez przeglądarkę
rendering
(lub interpretację) danych wygenerowanych przez aplikację WWW. Wszystkie ważniejsze przeglądarki internetowe
umożliwiają przeglądanie surowych danych, które otrzymują (tzn. danych niepoddanych renderowaniu). Dane
te znane są pod nazwą
źródło
(ang. source) strony, a ich przeglądanie może okazać się bardzo pomocne przy
debugowaniu, jak również stanowić świetny pierwszy krok ku zrozumieniu tego, co się tu właściwie dzieje.
Jeśli korzystasz z programu
Firefox lub Chrome, kliknij okno przeglądarki prawym przyciskiem myszy i wybierz z menu
kontekstowego polecenie
Wyświetl źródło strony, aby ujrzeć surowe dane przysłane przez aplikację WWW. Jeśli
używasz
Safari, musisz najpierw włączyć w nim opcje programistyczne. W tym celu otwórz okno preferencji Safari,
przejdź do karty
Zaawansowane i zaznacz widoczne w jej dolnej części pole wyboru Pokazuj menu Programowanie na
pasku menu
. Po zrobieniu tego możesz powrócić do okna przeglądarki, kliknąć je prawym przyciskiem myszy i wybrać
z menu kontekstowego polecenie
Pokaż kod źródłowy strony. Zrób to teraz i przyjrzyj się surowym danym, a następnie
porównaj to z tym, co zobaczyliśmy my (a co pokazane zostało na następnej stronie).
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.