E-book details

Django. Tworzenie nowoczesnych aplikacji internetowych w Pythonie

Django. Tworzenie nowoczesnych aplikacji internetowych w Pythonie

Ben Shaw, Saurabh Badhwar, Andrew Bird, Bharath Chandra K S, Chris Guest

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!

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

  • Title: Django. Tworzenie nowoczesnych aplikacji internetowych w Pythonie
  • Author: Ben Shaw, Saurabh Badhwar, Andrew Bird, Bharath Chandra K S, Chris Guest
  • Original title: Web Development with Django: Learn to build modern web applications with a Python-based framework
  • Translation: Joanna Zatorska
  • ISBN: 978-83-283-8365-4, 9788328383654
  • Date of issue: 2022-06-14
  • Format: Ebook
  • Item ID: twapdj
  • Publisher: Helion