Django 4 в примерах. Разрабатывайте мощные и надежные веб-приложения на Python с нуля

Django 4 в примерах. Разрабатывайте мощные и надежные веб-приложения на Python с нуля

Django 4 в примерах. Разрабатывайте мощные и надежные веб-приложения на Python с нуля
Автор: Меле Антонио
Дата выхода: 2023
Издательство: ДМК Пресс
Количество страниц: 802
Размер файла: 16.6 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы  Дополнительные материалы 

От издательства....19

Вступительное слово....20

Об авторе....22

О рецензенте....23

Предисловие....24

Глава 1. Разработка приложения для ведения блога....30

Установка языка Python....31

Создание виртуальной среды Python....32

Установка веб-фреймворка Django....33

Установка Django с по­мощью pip....33

Новые функциональные возможности Django 4....34

Главные компоненты веб-фреймворка....35

Общий обзор веб-фреймворка Django....35

Архитектура Django....36

Создание первого проекта....37

Применение первоначальных миграций базы данных....38

Запуск и выполнение сервера разработки....39

Настроечные параметры проекта....41

Проекты и приложения....42

Создание приложения....43

Создание моделей данных блога....44

Создание модели поста....44

Добавление полей даты/времени....46

Определение предустановленного порядка сортировки....47

Добавление индекса базы данных....48

Активация приложения....49

Добавление поля статуса....49

Добавление взаимосвязи многие-к-одному....52

Создание и применение миграций....53

Создание сайта администрирования для моделей....56

Создание суперпользователя....56

Сайт администрирования....57

Добавление моделей на сайт администрирования....58

Адаптация внешнего вида моделей под конкретно-прикладную задачу....60

Работа с наборами запросов QuerySet и менеджерами....62

Создание объектов....63

Обновление объектов....64

Извлечение объектов....65

Применение метода filter()....65

Применение метода exclude()....66

Применение метода order_by()....66

Удаление объектов....66

Когда вычисляются наборы запросов QuerySet....67

Создание модельных менеджеров....67

Разработка представлений списка и детальной информации....69

Создание представлений списка постов и детальной информации о посте....69

Применение функции сокращенного доступа get_object_or_404()....70

Добавление шаблонов URL-адресов представлений....71

Создание шаблонов представлений....73

Создание базового шаблона....74

Создание шаблона списка постов....75

Доступ к приложению....76

Создание шаблона детальной информации о посте....76

Цикл запроса/ответа....77

Дополнительные ресурсы....78

Резюме....79

Присоединяйтесь к нам на Discord....80

Глава 2. Усовершенствование блога за счет продвинутых функциональностей....81

Использование канонических URL-адресов для моделей....82

Создание дружественных для поисковой оптимизации URL-адресов постов....84

Видоизменение шаблонов URL-адресов....86

Видоизменение представлений....87

Видоизменение канонического URL-адреса постов....88

Добавление постраничной разбивки....89

Добавление постраничной разбивки в представление списка постов....89

Создание шаблона постраничной разбивки....90

Обработка ошибок постраничной разбивки....93

Разработка представлений на основе классов....96

Зачем использовать представления на основе классов....97

Использование представления на основе класса для отображения списка постов....97

Рекомендация постов по электронной почте....99

Разработка форм с по­мощью Django....100

Работа с формами в представлениях....101

Отправка электронных писем с по­мощью Django....103

Отправка электронных писем в представлениях....108

Прорисовка форм в шаблонах....109

Создание системы комментариев....114

Разработка модели комментария....114

Добавление комментариев на сайт администрирования....116

Оперирование формами ModelForm в представлениях....118

Создание форм из моделей....118

Создание шаблонов комментарной формы....121

Добавление комментариев в представление детальной информации о посте....123

Добавление комментариев в шаблон детальной информации о посте....124

Дополнительные ресурсы....131

Резюме....132

Глава 3. Расширение приложения для ведения блога....133

Добавление функциональности тегирования....134

Извлечение постов по сходству....143

Создание конкретно-прикладных шаблонных тегов и фильтров....148

Реализация конкретно-прикладных шаблонных тегов....149

Создание простого шаблонного тега....149

Создание шаблонного тега включения....152

Создание шаблонного тега, возвращающего набор запросов....154

Реализация конкретно-прикладных шаблонных фильтров....156

Создание шаблонного фильтра для поддержки синтаксиса Markdown....156

Добавление карты сайта....161

Создание новостных лент для постов блога....166

Добавление полнотекстового поиска в блог....173

Установка базы данных PostgreSQL....174

Создание базы данных PostgreSQL....175

Выгрузка существующих данных....176

Переключение базы данных в проекте....176

Загрузка данных в новую базу данных....178

Поиск по нескольким полям....179

Простые операции поиска....179

Разработка представления поиска....180

Выделение основ слов и ранжирование результатов....184

Выделение основ слов и удаление стоп-слов на разных языках....185

Взвешивание запросов....186

Поиск по триграммному сходству....187

Дополнительные ресурсы....188

Резюме....189

Глава 4. Разработка социального веб-сайта....190

Создание проекта социального веб-сайта....191

Запуск проекта социального веб-сайта....191

Использование поставляемого с Django фреймворка аутентификации....193

Создание представления входа в систему....194

Использование встроенных в Django представлений аутентификации....201

Представления входа и выхода....201

Представления смены пароля....207

Представление сброса пароля....210

Регистрация пользователей и профили пользователей....218

Регистрация пользователя....218

Расширение модели пользователя....225

Установка библиотеки Pillow и раздача медиафайлов....226

Создание миграций для модели профиля....227

Использование конкретно-прикладной модели пользователя....233

Использование фреймворка сообщений....233

Разработка конкретно-прикладного бэкенда аутентификации....237

Предотвращение использования существующего адреса электронной почты....240

Дополнительные ресурсы....241

Резюме....242

Глава 5. Реализация социальной аутентификации....243

Добавление социальной аутентификации на сайт....244

Обеспечение работы сервера разработки по протоколу HTTPS....247

Аутентификация с учетной записью Facebook....250

Аутентификация с учетной записью Twitter....258

Аутентификация с учетной записью Google....270

Создание профиля пользователей, регистрирующихся посредством социальной аутентификации....279

Дополнительные ресурсы....281

Резюме....282

Глава 6. Распространение контента на веб-сайте....283

Создание веб-сайта для управления визуальными закладками....284

Разработка модели изображения....284

Создание взаимосвязей многие-ко-многим....286

Регистрация модели изображения на сайте администрирования....287

Отправка контента с других сайтов....288

Очистка полей формы....289

Переопределение метода save() класса ModelForm....290

Установка библиотеки requests....290

Разработка букмарклета с по­мощью JavaScript....295

Создание представления детальной информации об изображениях....308

Создание миниатюр изображений с по­мощью easy-thumbnails....311

Добавление асинхронных действий с по­мощью JavaScript....314

Загрузка JavaScript в DOM....316

Защита от подделки межсайтовых HTTP-запросов на JavaScript....317

Выполнение HTTP-запросов с по­мощью JavaScript....319

Добавление бесконечной постраничной прокрутки в список изображений....325

Дополнительные ресурсы....332

Резюме....333

Глава 7. Отслеживание действий пользователя....334

Разработка системы подписки....335

Формирование взаимосвязей многие-ко-многим с промежуточной моделью....335

Создание представлений списка и детальной информации для профилей пользователей....338

Добавление действий пользователя по подписке/отписке с по­мощью JavaScript....344

Разработка типового приложения для потока активности....347

Применение фреймворка contenttypes....348

Добавление обобщенных отношений в модели....349

Игнорирование повторных действий в потоке активности....353

Добавление действий пользователя в поток активности....354

Оптимизация наборов запросов, предусматривающих связанные объекты....357

Применение метода select_related()....358

Применение метода prefetch_related()....359

Отображение потока активности....357

Создание шаблонов действий....359

Использование сигналов для денормализации количественных данных....363

Работа с сигналами....363

Конфигурационные классы приложений....366

Использование меню отладочных инструментов Django....368

Установка меню отладочных инструментов Django....369

Панели меню отладочных инструментов Django....372

Команды меню отладочных инструментов Django....375

Подсчет просмотров изображений с по­мощью хранилища Redis....376

Установка платформы Docker....377

Установка хранилища Redis....377

Использование хранилища Redis вместе с Python....379

Хранение просмотров изображений в хранилище Redis....381

Хранение рейтинга в хранилище Redis....383

Следующие шаги с Redis....386

Дополнительные ресурсы....387

Резюме....387

Глава 8. Разработка интернет-магазина....389

Создание проекта интернет-магазина....390

Создание моделей каталога товаров....391

Регистрация моделей каталога на сайте администрирования....395

Формирование представлений каталога....397

Создание шаблонов каталога....399

Разработка корзины покупок....405

Использование сеансов Django....405

Настроечные параметры сеанса....406

Срок истечения сеанса....407

Хранение корзин покупок в сеансах....408

Создание представлений корзины покупок....412

Добавление товаров в корзину....413

Разработка шаблона отображения корзины....415

Добавление товаров в корзину....417

Обновление количества товаров в корзине....419

Создание процессора контекста для текущей корзины....420

Процессоры контекста....420

Установка корзины в контекст запроса....421

Регистрация заказов клиентов....423

Создание моделей заказа....424

Включение моделей заказа на сайт администрирования....426

Создание заказов клиентов....427

Асинхронные задания....433

Работа с асинхронными заданиями....433

Работники, очереди сообщений и брокеры сообщений....434

Использование Django с Celery и RabbitMQ....435

Отслеживание Celery с по­мощью инструмента Flower....442

Дополнительные ресурсы....445

Резюме....445

Глава 9. Управление платежами и заказами....446

Интеграция платежного шлюза....446

Создание учетной записи Stripe....447

Установка библиотеки Stripe....450

Добавление Stripe в проект....451

Формирование процесса платежа....452

Интеграция платежного инструмента Stripe Checkout....454

Тестирование процесса оформления заказа....461

Использование тестовых кредитных карт....463

Проверка платежной информации в информационной панели Stripe....465

Применение веб-перехватчиков для получения уведомлений о платежах....469

Создание конечной точки веб-перехватчика....469

Тестирование уведомлений веб-перехватчиков....474

Отсылки к платежам Stripe в заказах....477

Выход в прямой эфир....481

Экспорт заказов в CSV-файлы....482

Добавление конкретно-прикладных действий на сайт администрирования....482

Расширение сайта администрирования за счет конкретно-прикладных представлений....485

Динамическое генерирование счетов-фактур в формате PDF....490

Создание шаблона PDF....491

Установка библиотеки WeasyPrint....491

Прорисовка PDF-файлов....492

Отправка PDF-файлов по электронной почте....496

Дополнительные ресурсы....499

Резюме....500

Глава 10. Расширение магазина....501

Создание купонной системы....501

Разработка купонной модели....502

Применение купона к корзине....506

Применение купонов к заказам....514

Создание купонов для платежного инструмента Stripe Checkout....519

Добавление купонов в заказы на сайте администрирования и в счета-фактуры в формате PDF....522

Разработка рекомендательного механизма....525

Рекомендация товаров на основе предыдущих покупок....526

Дополнительные ресурсы....534

Резюме....534

Глава 11. Добавление интернационализации в магазин....536

Интернационализация в Django....537

Настроечные параметры интернационализации и локализации....537

Команды управления интернационализацией....538

Установка инструментария gettext....538

Как Django определяет текущий язык....539

Как добавлять переводы в проект Django....539

Подготовка проекта к интернационализации....540

Перевод исходного кода Python....541

Ленивые переводы....542

Переводы с переменными....542

Стандартные переводы....542

Перевод собственного исходного кода....543

Формы множественного числа в переводах....543

Перевод шаблонов....547

Шаблонный тег {% blocktrans %}....548

Шаблонный тег {% trans %}....548

Перевод шаблонов магазина....549

Использование интерфейса перевода Rosetta....553

Нечеткие переводы....556

Шаблоны URL-адресов для интернационализации....556

Добавление префикса языка в шаблоны URL-адресов....557

Перевод шаблонов URL-адресов....558

Переключение языка сайта....562

Перевод моделей с по­мощью модуля django-parler....564

Установка модуля django-parler....564

Перевод полей моделей....565

Интеграция переводов на сайт администрирования....567

Создание миграций для переводов моделей....568

Использование переводов с ORM-преобразователем....571

Адаптация представлений под переводы....572

Локализация формата....574

Использование модуля django-localflavor для валидации полей формы....575

Дополнительные ресурсы....577

Резюме....578

Глава 12. Разработка платформы электронного обучения....579

Настройка проекта электронного обучения....580

Раздача медиафайлов....581

Разработка моделей курса....582

Регистрация моделей на сайте администрирования....584

Использование фикстур с целью предоставления моделям первоначальных данных....585

Создание моделей полиморфного содержимого....588

Использование модельного наследования....589

Абстрактные модели....590

Наследование многотабличной модели....590

Прокси-модели....591

Создание моделей Content....591

Создание конкретно-прикладных модельных полей....594

Добавление упорядочивания в модули и объекты содержимого....596

Добавление представлений аутентификации....600

Добавление системы аутентификации....600

Создание шаблонов аутентификации....601

Дополнительные ресурсы....604

Резюме....605

Глава 13. Создание системы управления контентом....606

Создание CMS....606

Использование примесей для представлений на основе классов....607

Создание представлений на основе классов....607

Работа с группами и разрешениями....610

Ограничение доступа к представлениям, основанным на классах....612

Управление модулями курса и их содержимым....618

Использование наборов форм для модулей курса....618

Добавление содержимого в модули курса....623

Управление модулями и их содержимым....629

Переупорядочивание модулей и их содержимого....634

Использование примесей из модуля django-braces....635

Дополнительные ресурсы....643

Резюме....643

Глава 14. Прорисовка и кеширование контента....644

Отображение курсов....645

Добавление регистрации студентов....650

Создание представления регистрации студентов....651

Зачисление на курсы....653

Доступ к содержимому курсов....657

Прорисовка разных типов содержимого....661

Использование кеш-фреймворка....663

Доступные кеш-бэкенды....664

Установка образа Memcached платформы Docker....665

Установка привязки Python к Memcached....665

Установка резидентного кеш-сервера Memcached....665

Добавление кеш-сервера Memcached в проект....666

Настроечные параметры кеша....666

Использование низкоуровневого API кеша....667

Уровни кеша....667

Проверка запросов к кешу с по­мощью меню отладочных инструментов Django Debug Toolbar....669

Кеширование на основе динамических данных....673

Кеширование фрагментов шаблона....674

Кеширование представлений....675

Использование сайтового кеша....676

Использование кеш-бэкенда Redis....677

Отслеживание сервера Redis с по­мощью приложения Django Redisboard....678

Дополнительные ресурсы....680

Резюме....681

Глава 15. Разработка API....682

Разработка RESTful API....683

Установка фреймворка Django REST framework....683

Определение сериализаторов....684

Что такое парсер и рендерер....685

Разработка представлений списка и детальной информации....686

Потребление API....688

Создание вложенных сериализаторов....690

Разработка конкретно-прикладных представлений API....692

Обработка аутентификации....693

Добавление разрешений в представления....694

Создание наборов представлений и маршрутизаторов....696

Добавление дополнительных действий в наборы представлений....698

Сериализация содержимого курса....699

Создание конкретно-прикладных разрешений....699

Потребление RESTful API....702

Дополнительные ресурсы....705

Резюме....706

Глава 16. Разработка чат-сервера....707

Создание приложения для ведения чата....707

Реализация представления чат-комнаты....708

Реально-временной Django на основе Channels....711

Асинхронные приложения с использованием ASGI....712

Цикл запроса/ответа с использованием приложения Channels....712

Установка приложения-обертки Сhannels....714

Написание потребителя....716

Маршрутизация....718

Реализация WebSocket-клиента....719

Активирование канального слоя....725

Каналы и группы....726

Установление канального слоя с использованием Redis....726

Обновление потребителя с целью широковещательной рассылки сообщений....727

Добавление контекста в сообщения....732

Видоизменение потребителя с целью обеспечения полной асинхронности....735

Интеграция приложения для ведения чата с существующими представлениями....737

Дополнительные ресурсы....738

Резюме....739

Глава 17. Выход в прямой эфир....740

Создание производственной среды....741

Управление настроечными параметрами для нескольких сред....741

Настрочные параметры локальной среды....742

Запуск локальной среды....743

Настройки производственной среды....743

Использование инструмента Docker Compose....745

Установка инструмента Docker Compose....745

Создание файла Dockerfile....746

Добавление требующихся пакетов Python....747

Создание файла Compose платформы Docker....748

Конфигурирование службы PostgreSQL....751

Применение миграции базы данных и создание суперпользователя....754

Конфигурирование службы Redis....755

Раздача Django через WSGI и NGINX....756

Использование сервера приложений uWSGI....757

Конфигурирование сервера приложений uWSGI....758

Использование веб-сервера NGINX....759

Конфигурирование веб-сервера NGINX....760

Использование хост-имени....762

Раздача статических и мультимедийных ресурсов....763

Сбор статических файлов....763

Раздача статических файлов с по­мощью веб-сервера NGINX....764

Обеспечение защиты сайта с помощью SSL/TLS....766

Проверка готовности проекта к работе в производственной среде....766

Конфигурирование проекта Django под SSL/TLS....767

Конфигурирование веб-сервера NGINX под использование SSL/TLS....769

Создание SSL/TLS-сертификата....769

Перенаправление HTTP-трафика на HTTPS....772

Использование Daphne для приложения Django Channels....773

Включение веб-сервера Daphne в конфигурацию веб-сервера NGINX....775

Использование безопасных соединений для веб-сокетов....775

Создание конкретно-прикладных промежуточных программных компонентов....779

Создание поддоменного промежуточного компонента....780

Раздача нескольких поддоменов с по­мощью веб-сервера NGINX....782

Реализация конкретно-прикладных команд управления....782

Дополнительные ресурсы....785

Резюме....786

Предметный указатель....788

Пустая страница....1

Книга охватывает многообразные аспекты создания веб-приложений с помощью самого популярного веб-фреймворка Django на языке Python. Изучив четыре проекта разной направленности (приложение для ведения блога и электронной коммерции, социальный веб-сайт, платформа электронного обучения), вы получите хорошее представление о том, как работает Django.

Прочитав книгу, вы:

  • усвоите основы Django, включая модели, ORM-преобразователь, представления, шаблоны, URL-адреса, формы, аутентификацию, сигналы и промежуточные программные компоненты;
  • реализуете аутентификацию с использованием учетных записей Facebook, Twitter и Google, настроите профили пользователей;
  • разработаете каталог товаров и корзину покупок для онлайн-магазина;
  • научитесь обрабатывать платежи с помощью платежного шлюза Stripe и управлять уведомлениями о платежах с помощью веб-перехватчиков;
  • интегрируете в свой проект сторонние приложения Django.

Опираясь на изученный материал, вы сможете создавать полнофункциональные веб-приложения на Python с аутентификацией, системами управления контентом, RESTful API и прочими элементами.

Издание предназначено читателям с базовыми знаниями Python, а также программистам, переходящим на Django с других веб-фреймворков. Оно подойдет и тем, кто уже использует Django в своей работе и хочет расширить свои навыки. Для изучения материала необходимы базовый опыт работы с Python и знание HTML и JavaScript.


Похожее:

Список отзывов:

Нет отзывов к книге.