Flask
Tworzenie aplikacji
internetowych w Pythonie
Frameworki
bardzo ułatwiają życie programistom. Pozwalają na szybkie tworzenie
nawet rozbudowanych aplikacji, ale praca z frameworkiem najczęściej
oznacza duże ograniczenia w doborze technologii. Wszystko jest w
porządku, dopóki deweloper stosuje dokładnie te rozwiązania,
które zaplanowali twórcy frameworka. Jeśli jednak
zechce użyć innej bazy danych albo wykorzystać własną, autorską metodę
uwierzytelniania użytkowników, może napotkać
różne nieprzewidziane problemy. Szczęśliwie nie wszystkie
mikrośrodowiska zachowują się w ten sposób. Framework
napisany w Pythonie Flask, w odróżnieniu od typowych
frameworków, umożliwia swobodne dobieranie technologii i
komponentów aplikacji, a nawet tworzenie własnych rozwiązań.
Oznacza to, że Flask pozwoli Ci zachować pełną kontrolę nad budowanym
oprogramowaniem!
To książka przeznaczona
dla twórców aplikacji internetowych,
którzy chcą nauczyć się pisać rozbudowane oprogramowanie we
Flasku.
W
praktyczny sposób przedstawia proces tworzenia kompletnej
aplikacji, od programu zawierającego zaledwie kilka linii kodu aż po
złożone oprogramowanie z wieloma zaawansowanymi rozwiązaniami
technicznymi. Rozpoczyna się gruntownym wprowadzeniem do Flaska i
stopniowo przechodzi do nieco trudniejszych zagadnień,
również takich jak migracje baz danych i API. Porusza też
tematykę usług sieciowych typu REST, obsługi błędów,
serializacji zasobów oraz korzystania z takich narzędzi jak
Selenium czy Heroku. Przemyślany układ treści, którą
zilustrowano praktycznymi przykładami kodu, ułatwia prześledzenie
procesu stopniowej rozbudowy aplikacji o nowe funkcjonalności.
W książce znajdziesz między innymi:
- zasady programowania we
Flasku
- opis struktury aplikacji
Flasky i etapy jej budowy
- sposoby korzystania z
szablonów
- strategie planowania
testów jednostkowych i analizy wydajności aplikacji
- opcje wdrażania aplikacji
Flask
Wstęp
11
CZĘŚĆ I .
WPROWADZENIE DO FLASKA
1.
Instalacja
21
Tworzenie katalogu aplikacji 22
Wirtualne środowiska 22
Tworzenie wirtualnego środowiska w Pythonie 3 23
Tworzenie wirtualnego środowiska w Pythonie 2 23
Praca z wirtualnymi środowiskami 24
Instalowanie pakietów Pythona za pomocą narzędzia pip 25
2.
Podstawowa struktura aplikacji
27
Inicjalizacja 27
Trasy i funkcje widoku 27
Kompletna aplikacja 29
Roboczy serwer WWW 29
Trasy dynamiczne 31
Tryb debugowania 32
Opcje wiersza polecenia 33
Cykl żądanie - odpowiedź 35
Kontekst aplikacji i żądania 35
Przesyłanie żądania 36
Obiekt żądania 37
Hooki w żądaniach 37
Odpowiedzi 38
Rozszerzenia Flaska 40
3.
Szablony
41
Mechanizm szablonów Jinja2 41
Renderowanie szablonów 42
Zmienne 43
Struktury sterujące 44
Integracja Bootstrapa z Flask-Bootstrap 45
Niestandardowe strony błędów 48
Łącza 51
Pliki statyczne 51
Lokalizowanie dat i czasu za pomocą pakietu Flask-Moment 52
4.
Formularze
internetowe 57
Konfiguracja 57
Klasy formularzy 58
Renderowanie formularzy HTML 59
Obsługa formularzy w funkcjach widoku 61
Przekierowania i sesje użytkownika 64
Wyświetlanie komunikatów 66
5.
Bazy
danych 69
Bazy danych SQL 69
Bazy danych NoSQL 70
SQL czy NoSQL? 71
Frameworki baz danych w Pythonie 71
Zarządzanie bazą danych za pomocą Flask-SQLAlchemy 73
Definicja modelu 74
Relacje 75
Operacje na bazach danych 77
Tworzenie tabel 77
Wstawianie wierszy 78
Modyfikowanie wierszy 79
Usuwanie wierszy 79
Zapytanie o wiersze 79
Wykorzystanie bazy danych w funkcjach widoku 81
Integracja z powłoką Pythona 82
Migrowanie baz danych za pomocą pakietu Flask-Migrate 83
Tworzenie repozytorium migracji 83
Tworzenie skryptu migracji 84
Aktualizacja bazy danych 85
Dodawanie kolejnych migracji 86
6.
Wiadomości
e-mail 87
Obsługa e-mail za pomocą rozszerzenia Flask-Mail 87
Wysyłanie wiadomości e-mail z powłoki Pythona 88
Integrowanie wiadomości e-mail z aplikacją 89
Asynchroniczne wysyłanie e-maila 90
7.
Struktura dużej aplikacji 93
Struktura projektu 93
Opcje konfiguracji 94
Pakiet aplikacji 96
Korzystanie z fabryki aplikacji 96
Implementacja funkcji aplikacji w projekcie 97
Skrypt aplikacji 100
Plik wymagań 100
Testy jednostkowe 101
Konfiguracja bazy danych 103
Uruchamianie aplikacji 103
CZĘŚĆ II.
PRZYKŁAD: APLIKACJA DO
BLOGOWANIA SPOŁECZNOŚCIOWEGO
8.
Uwierzytelnianie użytkownika 107
Rozszerzenia uwierzytelnienia dla Flaska 107
Bezpieczeństwo hasła 107
Haszowanie haseł za pomocą pakietu Werkzeug 108
Tworzenie schematu uwierzytelnienia 110
Uwierzytelnianie użytkownika za pomocą Flask-Login 112
Przygotowywanie modelu User na potrzeby logowania 112
Ochrona tras 113
Dodawanie formularza logowania 114
Logowanie użytkowników 115
Wylogowywanie użytkowników 117
Jak działa Flask-Login? 117
Testowanie 118
Rejestrowanie nowego użytkownika 119
Tworzenie formularza rejestracji użytkownika 119
Rejestracja nowych użytkowników 121
Potwierdzenie konta 122
Generowanie tokenów potwierdzających za pomocą pakietu
itsdangerous 122
Wysyłanie wiadomości e-mail z potwierdzeniem 124
Zarządzanie kontem 127
9.
Role
użytkowników 129
Reprezentacja ról w bazie danych 129
Przypisanie ról 132
Weryfikacja roli 133
10.
Profile użytkowników
137
Informacje o profilu 137
Strona profilu użytkownika 138
Edytor profilu 140
Edytor profilu z poziomu użytkownika 140
Edytor profilu z poziomu administratora 142
Awatary użytkownika 144
11.
Posty na blogu 149
Przesyłanie i wyświetlanie postów na blogu 149
Wpisy na blogach na stronach profilu 152
Stronicowanie długich list postów na blogu 152
Tworzenie fałszywych danych w postach na blogu 153
Renderowanie na stronach 154
Dodawanie widżetu stronicowania 155
Posty z formatowaniem przy użyciu pakietów Markdown i
Flask-PageDown 158
Korzystanie z pakietu Flask-PageDown 158
Obsługa tekstu sformatowanego na serwerze 160
Stałe linki do postów na blogu 161
Edytor postów 162
12.
Obserwatorzy
165
I znowu relacje w bazach danych 165
Relacje typu wiele-do-wielu 165
Relacje samoreferencyjne 167
Zaawansowane relacje wiele-do-wielu 168
Obserwujący na stronie profilu 171
Uzyskiwanie śledzonych postów za pomocą operacji Join 173
Wyświetlanie obserwowanych postów na stronie
głównej 176
13.
Komentarze
użytkowników 181
Zapisywanie komentarzy w bazie danych 181
Przesyłanie i wyświetlanie komentarzy 182
Moderowanie komentarzy 184
14.
Interfejsy
programowania aplikacji 189
Wprowadzenie do architektury REST 189
Zasoby są wszystkim 190
Metody żądania 190
Treści żądań i odpowiedzi 191
Kontrola wersji 192
Flask i usługi sieciowe typu REST 193
Tworzenie schematu interfejsu API 193
Obsługa błędów 194
Uwierzytelnianie użytkownika za pomocą Flask-HTTPAuth 195
Uwierzytelnianie za pomocą tokenów 198
Serializacja zasobów do i z formatu JSON 199
Implementacja punktów końcowych dla zasobów 202
Podział dużych kolekcji zasobów na strony 204
Testowanie usług internetowych za pomocą HTTPie 205
CZĘŚĆ III.
OSTATNIE KROKI
15.
Testowanie
209
Uzyskiwanie raportów pokrycia kodu 209
Klient testowy Flaska 212
Testowanie aplikacji internetowych 212
Testowanie usług internetowych 215
Kompleksowe testy z użyciem Selenium 217
Czy warto? 221
16.
Wydajność
223
Niska wydajność bazy danych 223
Profilowanie kodu źródłowego 225
17.
Wdrożenie
227
Etapy prac wdrożenia 227
Protokołowanie błędów na produkcji 228
Wdrożenie w chmurze 229
Platforma Heroku 230
Przygotowanie aplikacji 230
Testowanie z wykorzystaniem Heroku Local 237
Wdrażanie za pomocą polecenia git push 238
Wdrażanie aktualizacji 239
Kontenery na platformie Docker 240
Instalowanie Dockera 240
Budowanie obrazu kontenera 241
Uruchamianie kontenera 244
Sprawdzanie działającego kontenera 245
Przekazywanie obrazu kontenera do rejestru zewnętrznego 246
Korzystanie z zewnętrznej bazy danych 247
Orkiestracja kontenerów za pomocą Docker Compose 248
Sprzątanie starych kontenerów i obrazów 251
Korzystanie z platformy Docker podczas produkcji 252
Tradycyjne wdrożenia 252
Konfiguracja serwera 253
Importowanie zmiennych środowiskowych 253
Konfigurowanie protokołowania 254
18.
Dodatkowe zasoby 255
Korzystanie ze zintegrowanego środowiska programistycznego (IDE) 255
Wyszukiwanie rozszerzeń 256
Uzyskiwanie pomocy 256
Angażowanie się w społeczność Flaska 257
264
strony, Format: 17.0x24.0cm, oprawa miękka