Django. Tworzenie nowoczesnych aplikacji internetowych w Pythonie - ebook
Django. Tworzenie nowoczesnych aplikacji internetowych w Pythonie - ebook
Django zaskarbił sobie uznanie wielu programistów. Jest to platforma, która udostępnia wszystkie narzędzia potrzebne do tworzenia aplikacji internetowych w Pythonie. To również narzędzie pozwalające na sprawne rozpoczęcie pracy i rozwijanie solidnego i bezpiecznego kodu. Aby jednak zapewnić sobie satysfakcję, a tworzonym projektom profesjonalną jakość, trzeba przyswoić koncepcje i zasady pracy z Django.
Dzięki temu praktycznemu przewodnikowi po Django zdobędziesz wiedzę i pewność siebie potrzebne do budowania rzeczywistych aplikacji w Pythonie. W przystępny sposób opisano tu podstawowe koncepcje i funkcje Django, a następnie pokazano poszczególne etapy cyklu rozwoju rzeczywistej aplikacji internetowej. Dla celów dydaktycznych ten dość złożony projekt został podzielony na zbiór mniejszych zadań, dzięki czemu Twoja nauka będzie przebiegała w sposób efektywny i przemyślany. W trakcie wykonywania ćwiczeń zdobędziesz praktyczne umiejętności, niezbędne do budowy przyjemnych w użytkowaniu aplikacji WWW. Przekonasz się, że Django pozwala na efektywne i satysfakcjonujące budowanie nawet bardzo ambitnych projektów!
W książce między innymi:
- konfiguracja projektu Django, szablony HTML i modele danych w Django
- podstawowe elementy aplikacji internetowej, w tym sesje i uwierzytelnianie
- dodawanie interfejsów API typu REST do aplikacji Django
- korzystanie z zewnętrznych bibliotek Django
- testowanie kodu za pomocą platform testowych Django i Pythona
Django ma wszystko, czego wymaga najlepszy projektant aplikacji WWW!
Spis treści
Wstęp
Wprowadzenie
Rozdział 1. Wprowadzenie do Django
- Wstęp
- Tworzenie szkieletu projektu i aplikacji Django
- Ćwiczenie 1.1. Tworzenie projektu, aplikacji oraz serwera roboczego
- Paradygmat Model View Template
- Modele
- Widoki
- Szablony
- Wstęp do HTTP
- Przetwarzanie żądania
- Projekt Django
- Aplikacje Django
- Konfiguracja programu PyCharm
- Ćwiczenie 1.2. Konfiguracja projektu w programie PyCharm
- Szczegółowe informacje o widokach
- Mapowanie adresów URL
- Ćwiczenie 1.3. Pisanie widoku i odwzorowania URL
- GET, POST i obiekty QueryDict
- Ćwiczenie 1.4. Sprawdzanie wartości GET i korzystanie z obiektu QueryDict
- Analiza ustawień Django
- Znajdowanie szablonów HTML w katalogach aplikacji
- Ćwiczenie 1.5. Tworzenie katalogu templates oraz szablonu bazowego
- Renderowanie szablonu za pomocą funkcji render
- Ćwiczenie 1.6. Renderowanie szablonu w widoku
- Renderowanie zmiennych w szablonach
- Ćwiczenie 1.7. Użycie zmiennych w szablonach
- Debugowanie i obsługa błędów
- Wyjątki
- Ćwiczenie 1.8. Generowanie i wyświetlanie wyjątków
- Debugowanie
- Ćwiczenie 1.9. Debugowanie kodu
- Zadanie 1.1. Tworzenie ekranu powitalnego witryny
- Zadanie 1.2. Szkielet wyszukiwarki w witrynie Book
- Podsumowanie
Rozdział 2. Modele i migracje
- Wstęp
- Bazy danych
- Relacyjne bazy danych
- Nierelacyjne bazy danych
- Operacje bazodanowe z użyciem języka SQL
- Typy danych w relacyjnych bazach danych
- Ćwiczenie 2.1. Tworzenie bazy danych książek
- Operacje CRUD w języku SQL
- Operacje tworzenia w języku SQL
- Operacje odczytu w języku SQL
- Operacje aktualizacji w języku SQL
- Operacje usuwania w języku SQL
- ORM w platformie Django
- Konfiguracja bazy danych i tworzenie aplikacji Django
- Aplikacje Django
- Migracje Django
- Tworzenie modeli i migracji Django
- Typy pól
- Opcje pól
- Klucze główne
- Relacje
- Wiele do jednego
- Wiele do wielu
- Relacje jeden do jednego
- Dodawanie modelu Review
- Metody modeli
- Migracja aplikacji reviews
- Operacje bazodanowe CRUD w Django
- Ćwiczenie 2.2. Tworzenie wpisu w bazie danych Bookr
- Ćwiczenie 2.3. Tworzenie wpisu za pomocą metody create()
- Tworzenie obiektu z kluczem obcym
- Ćwiczenie 2.4. Tworzenie rekordów dla relacji wiele do jednego
- Ćwiczenie 2.5. Tworzenie rekordów z relacjami wiele do wielu
- Ćwiczenie 2.6. Relacja wiele do wielu z wykorzystaniem metody add()
- Użycie metod create() i set() podczas tworzenia relacji
- Operacje odczytu
- Ćwiczenie 2.7. Pobieranie obiektu za pomocą metody get()
- Zwracanie obiektu za pomocą metody get()
- Ćwiczenie 2.8. Użycie metody al() do pobrania zbioru obiektów
- Pobieranie obiektów za pomocą filtrowania
- Ćwiczenie 2.9. Użycie metody filter() do pobierania obiektów
- Filtrowanie za pomocą wyszukiwania pól
- Dopasowywanie wzorców w operacjach filtrowania
- Pobieranie obiektów poprzez wykluczanie
- Pobieranie obiektów za pomocą metody order_by()
- Przeszukiwanie relacji
- Wyszukiwanie na podstawie kluczy obcych
- Przeszukiwanie na podstawie nazwy modelu
- Przeszukiwanie relacji z kluczem obcym za pomocą instancji obiektu
- Ćwiczenie 2.10. Znajdowanie obiektów na podstawie relacji wiele do wielu za pomocą wyszukiwania pola
- Ćwiczenie 2.11. Przeszukiwanie relacji wiele do wielu za pomocą obiektów
- Ćwiczenie 2.12. Przeszukiwanie relacji wiele do wielu za pomocą metody set()
- Ćwiczenie 2.13. Użycie metody update()
- Ćwiczenie 2.14. Użycie metody delete()
- Zadanie 2.1. Tworzenie modeli dla aplikacji do zarządzania projektami
- Wypełnianie danymi bazy danych projektu Bookr
- Podsumowanie
Rozdział 3. Mapowanie URL, widoki i szablony
- Wstęp
- Widoki oparte na funkcjach
- Widoki oparte na klasach
- Konfiguracja URL
- Ćwiczenie 3.1. Implementowanie prostego widoku opartego na funkcji
- Szablony
- Ćwiczenie 3.2. Użycie szablonów do wyświetlenia komunikatu powitalnego
- Język szablonów Django
- Ćwiczenie 3.3. Wyświetlanie listy książek i recenzji
- Dziedziczenie szablonów
- Stylowanie szablonów za pomocą biblioteki Bootstrap
- Ćwiczenie 3.4. Dodawanie dziedziczenia szablonów i paska nawigacyjnego Bootstrapa
- Zadanie 3.1. Implementacja widoku szczegółów książki
- Podsumowanie
Rozdział 4. Wstęp do witryny administracyjnej Django
- Wstęp
- Tworzenie konta superużytkownika
- Ćwiczenie 4.1. Tworzenie konta superużytkownika
- Operacje CRUD za pomocą aplikacji administracyjnej Django
- Tworzenie
- Pobieranie danych
- Aktualizowanie
- Usuwanie
- Użytkownicy i grupy
- Ćwiczenie 4.2. Dodawanie i modyfikowanie użytkowników i grup w aplikacji administracyjnej
- Rejestrowanie modelu Reviews
- Listy obiektów do edycji
- Strona edycji modelu Publisher
- Strona służąca do edycji książki
- Ćwiczenie 4.3. Klucze obce i usuwanie z poziomu aplikacji administracyjnej
- Dostosowywanie interfejsu administracyjnego
- Poprawki dotyczące całej witryny administracyjnej Django
- Analiza obiektu AdminSite w powłoce Pythona
- Zadanie 4.1. Dostosowywanie obiektu SiteAdmin
- Dostosowywanie klas ModelAdmin
- Ćwiczenie 4.4. Dodawanie filtra na podstawie daty oraz hierarchii dat
- Pasek wyszukiwania
- Wykluczanie i grupowanie pól
- Zadanie 4.2. Dostosowywanie aplikacji administracyjnych dla modeli
- Podsumowanie
Rozdział 5. Zwracanie plików statycznych
- Wstęp
- Zwracanie plików statycznych
- Wprowadzenie do wyszukiwarek plików statycznych
- Wyszukiwarki plików statycznych - użycie podczas obsługi żądania
- AppDirectoriesFinder
- Przestrzenie nazw plików statycznych
- Ćwiczenie 5.1. Zwracanie pliku z katalogu aplikacji
- Generowanie statycznych adresów URL za pomocą znacznika szablonów static
- Ćwiczenie 5.2. Użycie znacznika szablonów static
- FileSystemFinder
- Ćwiczenie 5.3. Zwracanie plików z katalogu static projektu
- Wyszukiwarki plików statycznych - użycie polecenia collectstatic
- Ćwiczenie 5.4. Kopiowanie plików statycznych dla środowiska produkcyjnego
- Tryb STATICFILES_DIRS z przedrostkiem
- Polecenie findstatic
- Ćwiczenie 5.5. Znajdowanie plików poleceniem findstatic
- Zwracanie ostatnich plików (w celu unieważnienia pamięci podręcznej)
- Ćwiczenie 5.6. Eksploracja silnika przechowywania ManifestFilesStorage
- Niestandardowe silniki magazynowania
- Zadanie 5.1. Dodawanie logo do aplikacji reviews
- Zadanie 5.2. Ulepszenia w stylach CSS
- Zadanie 5.3. Dodawanie globalnego logo
- Podsumowanie
Rozdział 6. Formularze
- Wstęp
- Czym jest formularz?
- Element <form>
- Rodzaje pól wejściowych
- Ćwiczenie 6.1. Tworzenie formularza HTML
- Bezpieczeństwo formularza dzięki ochronie przeciwko Cross-Site Request Forgery
- Dostęp do danych w widoku
- Ćwiczenie 6.2. Pobieranie danych POST w widoku
- Wybór między żądaniami GET i POST
- Dlaczego trzeba używać metody GET, jeśli można umieścić parametry w URL?
- Biblioteka Forms w Django
- Definiowanie formularza
- Renderowanie formularza w szablonie
- Ćwiczenie 6.3. Tworzenie i renderowanie formularza Django
- Walidacja formularzy i pobieranie wartości Pythona
- Ćwiczenie 6.4. Walidacja formularza w widoku
- Wbudowana walidacja pól
- Ćwiczenie 6.5. Dodatkowa walidacja pól
- Zadanie 6.1. Wyszukiwanie książek
- Podsumowanie
Rozdział 7. Zaawansowana walidacja formularzy i formularzy modeli
- Wstęp
- Niestandardowa walidacja i czyszczenie pól
- Niestandardowe walidatory
- Metody oczyszczania
- Walidacja na podstawie wielu pól
- Ćwiczenie 7.1. Niestandardowe metody oczyszczania i walidacji
- Wartości zastępcze i początkowe
- Ćwiczenie 7.2. Wartości zastępcze i początkowe
- Tworzenie i edytowanie modeli Django
- Klasa ModelForm
- Ćwiczenie 7.3. Tworzenie i edytowanie modelu Publisher
- Zadanie 7.1. Stylowanie i integracja formularza modelu Publisher
- Zadanie 7.2. Interfejs tworzenia instancji modelu Review
- Podsumowanie
Rozdział 8. Zwracanie multimediów i przesyłanie plików
- Wstęp
- Ustawienia związane z przesyłaniem i zwracaniem plików multimedialnych
- Zwracanie plików multimedialnych w środowisku roboczym
- Ćwiczenie 8.1. Konfiguracja magazynu plików multimedialnych i ich zwracanie
- Procesory kontekstu i użycie opcji MEDIA_URL w szablonach
- Ćwiczenie 8.2. Ustawienia szablonu i użycie opcji MEDIA_URL w szablonach
- Przesyłanie plików za pomocą formularzy HTML
- Obsługa przesłanych plików w widoku
- Ćwiczenie 8.3. Przesyłanie i pobieranie plików
- Przesyłanie plików za pomocą formularzy Django
- Ćwiczenie 8.4. Przesyłanie plików za pomocą formularza Django
- Przesyłanie obrazów za pomocą formularzy Django
- Zmiana rozmiaru obrazów za pomocą biblioteki Pillow
- Ćwiczenie 8.5. Przesyłanie obrazów za pomocą formularzy Django
- Zwracanie przesłanych (i innych) plików za pomocą Django
- Magazynowanie plików w instancjach modeli
- Zapisywanie obrazów w instancjach modeli
- Korzystanie z klasy FieldFile
- Odwoływanie się do plików multimedialnych w szablonach
- Ćwiczenie 8.6. FileField i ImageField w modelach
- Klasa ModelForm i przesyłanie plików
- Ćwiczenie 8.7. Przesyłanie plików i obrazów za pomocą instancji klasy ModelForm
- Zadanie 8.1. Przesyłanie obrazu i plików PDF dotyczących książek
- Zadanie 8.2. Wyświetlanie okładki i łącza do fragmentu książki
- Podsumowanie
Rozdział 9. Sesje i uwierzytelnianie
- Wstęp
- Middleware
- Moduły middleware
- Implementacja widoków i szablonów do uwierzytelniania
- Ćwiczenie 9.1. Zmiana przeznaczenia szablonu logowania aplikacji administracyjnej
- Przechowywanie haseł w Django
- Strona profilu i obiekt request.user
- Ćwiczenie 9.2. Dodawanie strony profilu
- Dekoratory uwierzytelniania i przekierowania
- Ćwiczenie 9.3. Dodawanie dekoratorów uwierzytelniania do widoków
- Dodawanie danych uwierzytelniania do szablonów
- Ćwiczenie 9.4. Przełączanie łączy logowania i wylogowania w bazowym szablonie
- Zadanie 9.1. Udostępnianie treści na podstawie stanu uwierzytelnienia za pomocą bloków warunkowych w szablonach
- Sesje
- Moduł pickle lub magazyn w formacie JSON
- Ćwiczenie 9.5. Analiza klucza sesji
- Przechowywanie danych w sesji
- Ćwiczenie 9.6. Zapisywanie w sesji ostatnio wyświetlanych książek
- Zadanie 9.2. Wykorzystanie magazynu sesji na stronie wyszukiwania książek
- Podsumowanie
Rozdział 10. Zaawansowane aspekty aplikacji administracyjnej Django i jej dostosowywanie
- Wstęp
- Dostosowywanie witryny administracyjnej
- Wykrywanie plików administracyjnych w Django
- Klasa AdminSite w Django
- Ćwiczenie 10.1. Tworzenie niestandardowej witryny administracyjnej w projekcie Bookr
- Nadpisywanie domyślnej właściwości admin.site
- Ćwiczenie 10.2. Nadpisywanie domyślnej witryny administracyjnej
- Dostosowanie tekstu w witrynie administracyjnej za pomocą atrybutów AdminSite
- Dostosowywanie szablonów witryny administracyjnej
- Ćwiczenie 10.3. Dostosowanie szablonu wylogowania dla witryny administracyjnej Bookr
- Dodawanie widoków do witryny administracyjnej
- Tworzenie nowej funkcji widoku
- Dostęp do wspólnych zmiennych szablonu
- Mapowanie adresów URL na niestandardowy widok
- Ograniczanie niestandardowych widoków do witryny administracyjnej
- Ćwiczenie 10.4. Dodawanie niestandardowych widoków do witryny administracyjnej
- Przekazywanie dodatkowych kluczy do szablonów za pomocą zmiennych szablonów
- Zadanie 10.1. Tworzenie niestandardowego interfejsu administracyjnego z wbudowaną wyszukiwarką
- Podsumowanie
Rozdział 11. Zaawansowane aspekty szablonów i widoki oparte na klasach
- Wstęp
- Filtry szablonów
- Niestandardowe filtry szablonów
- Filtry szablonów
- Konfiguracja katalogu służącego do zapisywania filtrów szablonów
- Konfiguracja biblioteki szablonów
- Implementowanie niestandardowej funkcji filtra
- Użycie niestandardowych filtrów w szablonach
- Ćwiczenie 11.1. Tworzenie niestandardowego filtra szablonów
- Filtry tekstowe
- Znaczniki szablonów
- Typy znaczników szablonów
- Proste znaczniki
- Tworzenie prostych znaczników szablonów
- Ćwiczenie 11.2. Tworzenie niestandardowego prostego znacznika
- Znaczniki włączające
- Ćwiczenie 11.3. Budowanie niestandardowego znacznika włączającego
- Widoki Django
- Widoki oparte na klasach
- Ćwiczenie 11.4. Tworzenie katalogu książek w widoku opartym na klasach
- Operacje CRUD za pomocą widoków opartych na klasach
- Zadanie 11.1. Renderowanie szczegółów na stronie profilu użytkownika za pomocą znaczników włączających
- Podsumowanie
Rozdział 12. Tworzenie API REST-owego
- Wstęp
- API REST-owe
- Django REST Framework
- Instalacja i konfiguracja
- Widoki API oparte na funkcjach
- Ćwiczenie 12.1. Tworzenie prostego API REST-owego
- Serializery
- Ćwiczenie 12.2. Tworzenie widoku API w celu wyświetlenia listy książek
- Widoki API oparte na klasach i widoki generyczne
- Serializery modeli
- Ćwiczenie 12.3. Tworzenie widoków API opartych na klasach i serializerów modeli
- Zadanie 12.1. Tworzenie punktu końcowego API dla strony poświęconej najaktywniejszym współautorom
- Obiekty typu ViewSet
- Routery
- Ćwiczenie 12.4. Używanie zbiorów widoków i routerów
- Uwierzytelnianie
- Uwierzytelnianie oparte na tokenach
- Ćwiczenie 12.5. Implementowanie uwierzytelniania opartego na tokenach w API aplikacji Bookr
- Podsumowanie
Rozdział 13. Generowanie plików CSV, PDF i innych plików binarnych
- Wstęp
- Obsługa plików CSV w Pythonie
- Korzystanie z modułu csv Pythona
- Odczytywanie danych z pliku CSV
- Ćwiczenie 13.1. Odczyt pliku CSV w Pythonie
- Zapisywanie danych do plików CSV za pomocą Pythona
- Ćwiczenie 13.2. Generowanie pliku CSV za pomocą modułu Pythona csv
- Lepszy sposób odczytu i zapisu plików CSV
- Przetwarzanie plików Excela w Pythonie
- Eksportowanie danych do plików binarnych
- Obsługa plików XLSX za pomocą pakietu XlsxWriter
- Ćwiczenie 13.3. Tworzenie plików XLSX w Pythonie
- Obsługa plików PDF w Pythonie
- Przekształcanie stron WWW do formatu PDF
- Ćwiczenie 13.4. Generowanie dokumentu PDF na podstawie strony WWW w Pythonie
- Tworzenie wykresów w Pythonie
- Generowanie wykresów za pomocą biblioteki plotly
- Ćwiczenie 13.5. Generowanie wykresów w Pythonie
- Integrowanie biblioteki plotly z Django
- Integrowanie wizualizacji z Django
- Ćwiczenie 13.6. Wizualizacja historii przeczytanych książek na stronie profilowej użytkownika
- Zadanie 13.1. Eksportowanie książek przeczytanych przez użytkownika do pliku XLSX
- Podsumowanie
Rozdział 14. Testowanie
- Wstęp
- Dlaczego testowanie jest ważne
- Testy automatyczne
- Testowanie w Django
- Implementowanie przypadków testowych
- Testy jednostkowe w Django
- Korzystanie z asercji
- Ćwiczenie 14.1. Pisanie prostego testu jednostkowego
- Konfiguracja przed testami i czyszczenie po wykonaniu każdego przypadku testowego
- Testowanie modeli Django
- Ćwiczenie 14.2. Testowanie modeli Django
- Testowanie widoków Django
- Ćwiczenie 14.3. Pisanie przypadków testowych dla widoków Django
- Testowanie widoków wymagających uwierzytelniania
- Ćwiczenie 14.4. Pisanie przypadków testowych w celu walidacji uwierzytelnionych użytkowników
- Klasa RequestFactory Django
- Ćwiczenie 14.5. Testowanie widoków za pomocą klasy RequestFactory
- Testowanie widoków opartych na klasach
- Klasy przypadków testowych w Django
- SimpleTestCase
- TransactionTestCase
- LiveServerTestCase
- Modularyzacja kodu testowego
- Zadanie 14.1. Testowanie modeli i widoków w projekcie Bookr
- Podsumowanie
Rozdział 15. Zewnętrzne biblioteki Django
- Wstęp
- Zmienne środowiskowe
- django-configurations
- Zmiany w pliku manage.py
- Konfiguracja ze zmiennych środowiskowych
- Ćwiczenie 15.1. Konfiguracja biblioteki django-configurations
- dj-database-url
- Ćwiczenie 15.2. Konfiguracja biblioteki dj-database-url
- Django Debug Toolbar
- Ćwiczenie 15.3. Konfiguracja narzędzia Django Debug Toolbar
- django-crispy-forms
- Filtr crispy
- Znacznik szablonów crispy
- Ćwiczenie 15.4. Użycie biblioteki Django Crispy Forms z formularzem SearchForm
- django-allauth
- Inicjalizacja uwierzytelniania za pomocą biblioteki django-allauth
- Zadanie 15.1. Aktualizacja formularza z wykorzystaniem klasy FormHelper
- Podsumowanie
Rozdział 16. Używanie frontendowej biblioteki JavaScriptu z Django
- Wstęp
- Platformy JavaScriptu
- Wprowadzenie do JavaScriptu
- React
- Komponenty
- Ćwiczenie 16.1. Konfiguracja przykładowej strony z wykorzystaniem Reacta
- JSX
- Ćwiczenie 16.2. JSX i Babel
- Właściwości JSX
- Ćwiczenie 16.3. Właściwości komponentu Reacta
- Obiekty Promise w JavaScripcie
- fetch
- Ćwiczenie 16.4. Pobieranie i wyświetlanie książek
- Znacznik szablonów verbatim
- Zadanie 16.1. Podgląd recenzji
- Podsumowanie
Dodatek A
Skorowidz
Kategoria: | Webmaster |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-8365-4 |
Rozmiar pliku: | 30 MB |