Logout succeed
Logout succeed. See you again!

Django 2 в примерах PDF
Preview Django 2 в примерах
Антонио Меле Узнайте Django 2, D создав 4 проекта с нуля j Если вы хотите узнать о полном цикле разработки профессионального a веб-приложения с Django, эта книга – для вас. Вы реализуете блог, социальную сеть, интернет-магазин и платформу n для онлайн-обучения. Научитесь применять AJAX и создадите RESTful Django 2 API, а также узнаете, как настроить Django-проект на работу в боевом g режиме. Эта книга проведет вас по пути создания полезных приложений и o познакомит с лучшими практиками решения типовых проблем при разработке. После ее прочтения вы будете понимать, как работает в примерах фреймворк Django и как с его помощью создавать продвинутые веб- 2 приложения. Вы научитесь: в • создавать Django-приложения, пригодные для многократного использо- вания; п • добавлению продвинутых функций, оптимизации кода, использованию кеширования; р • интернационализации и реализации переводов в Django-проектах; и • улучшению пользовательского опыта при работе с сайтом с помощью JavaScript и AJAX; м Создавайте мощные и надежные • интеграции со сторонними социальными сетями; • интегрировать в Django-проекты возможности других приложений, е веб-приложения на Python с нуля таких как Redis и Celery; • работать с RESTful API. р Для максимально эффективного изучения вам необходимо иметь базовые знания Python, HTML и JavaScript, но вы можете быть новичком в Django и а даже ни разу до этого момента не сталкиваться с этим фреймворком. х ISBN 978-5-97060-746-6 Интернет-магазин: www.dmkpress.com Оптовая продажа: КТК “Галактика” [email protected] www.дмк.рф 9 785970 607466 Антонио Меле Django 2 в примерах Antonio Melé Django 2 by Example Build powerful and reliable Python web applications from scratch BIRMINGHAM – MUMBAI Антонио Меле Django 2 в примерах Создавайте мощные и надежные веб-приложения Python с нуля Москва, 2019 УДК 004.42 ББК 32.972 М47 Меле А. М47 Django 2 в примерах / пер. с анг. Д. В. Плотниковой. – М.: ДМК Пресс, 2019. – 408 с.: ил. ISBN 978-5-97060-746-6 Django — это мощный Рython-фреймворк для веб-приложений, который поощряет быстрое развитие и чистый, прагматичный дизайн, предлагает относительно простое обучение. Это делает его привлекательным как для новичков, так и для опытных раз- работчиков. В рамках данной книги вы пройдете весь путь создания полноценных веб-приложений с помощью Django. Вы научитесь работать не только с основными компонентами, предо- ставляемыми фреймворком, но и узнаете, как интегрировать в проект популярные сто- ронние инструменты. В книге описано создание приложений, которые решают реальные задачи, используют лучшие практики разработки. После прочтения этой книги у вас будет понимание того, как работает Django, как создавать практичные веб-приложения и расширять их с помощью дополнительных инструментов. Издание будет полезно всем разработчикам приложений. УДК 004.42 ББК 32.972 Authorized Russian translation of the English edition of Django 2 by Example ISBN 9781788472487 © 2018 Packt Publishing. This translation is published and sold by permission of Packt Publishing, which owns or controls all rights to publish and sell the same. Все права защищены. Любая часть этой книги не может быть воспроизведена в ка- кой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-78847-248-7 (анг.) © 2018 Packt Publishing ISBN 978-5-97060-746-6 (рус.) © Оформление, издание, перевод, ДМК Пресс, 2019 Посвящается моей сестре Содержание Об авторе ......................................................................................................................12 О рецензентах ............................................................................................................13 Предисловие ...............................................................................................................14 Глава 1. Создание приложения блога ..........................................................19 Установка Django ................................................................................................................19 Создание изолированного Python-окружения ............................................................20 Установка Django через pip ............................................................................................21 Создание первого проекта .................................................................................................21 Запуск сервера для разработки .....................................................................................23 Настройки проекта.........................................................................................................24 Проекты и приложения .................................................................................................25 Создание приложения ...................................................................................................25 Проектирование схемы данных для блога ........................................................................26 Активация приложения .................................................................................................28 Создание и применение миграций ..............................................................................28 Создание сайта администрирования ................................................................................30 Сайт администрирования Django .................................................................................30 Добавление собственных моделей на сайт администрирования ...............................31 Настройка отображения моделей .................................................................................33 Работа с QuerySet и менеджерами .....................................................................................35 Создание объектов .........................................................................................................35 Изменение объектов ......................................................................................................36 Получение объектов .......................................................................................................36 Удаление объектов .........................................................................................................37 Когда выполняются запросы QuerySet’ов .....................................................................37 Создание менеджера модели ........................................................................................38 Обработчики списка статей и страницы подробностей ..................................................38 Создание обработчиков списка и страницы подробностей........................................39 Добавление шаблонов URL’ов для обработчиков .........................................................40 Канонические URL’ы для моделей ................................................................................41 Создание HTML-шаблонов для обработчиков ..................................................................41 Добавление постраничного отображения ........................................................................44 Использование обработчиков-классов .............................................................................46 Резюме .................................................................................................................................47 Глава 2. Добавление продвинутых функций в блог ...........................48 Функция «Поделиться статьей через e-mail» ....................................................................48 Создание Django-форм ..................................................................................................48 Содержание 7 Обработка данных формы .............................................................................................49 Отправка электронной почты с Django ........................................................................51 Отображение форм в HTML-шаблонах .........................................................................53 Добавление подсистемы комментариев ...........................................................................56 Создание модельных форм ...........................................................................................58 Обработка модельных форм .........................................................................................58 Добавление комментариев в шаблон статьи ...............................................................60 Добавление подсистемы тегов ..........................................................................................63 Формирование списка рекомендованных статей ............................................................68 Резюме .................................................................................................................................70 Глава 3. Расширение приложения блога ...................................................71 Создание шаблонных тегов и фильтров ...........................................................................71 Создание собственных тегов .........................................................................................71 Создание собственных фильтров ..................................................................................76 Добавление карты сайта ....................................................................................................78 Добавление RSS для статей ................................................................................................81 Добавление полнотекстового поиска ................................................................................83 Установка PostgreSQL .....................................................................................................83 Простые поисковые запросы ........................................................................................84 Поиск по нескольким полям .........................................................................................85 Обработчик поиска ........................................................................................................85 Стемминг и ранжирование результатов ......................................................................87 Взвешенные запросы .....................................................................................................88 Поиск с помощью триграмм .........................................................................................89 Другие инструменты полнотекстового поиска ............................................................90 Резюме .................................................................................................................................90 Глава 4. Создание социальной сети ..............................................................91 Создание проекта для социальной сети ...........................................................................91 Запуск проекта ...............................................................................................................91 Использование системы аутентификации Django ...........................................................92 Создание обработчика авторизации ............................................................................93 Использование обработчиков аутентификации Django .............................................98 Обработчики входа и выхода ........................................................................................98 Обработчики смены пароля ........................................................................................103 Обработчики восстановления пароля ........................................................................105 Регистрация и профили пользователей ..........................................................................109 Регистрация пользователей ........................................................................................109 Расширение модели пользователя .............................................................................113 Подключение системы уведомлений .........................................................................118 Реализация бэкэнда аутентификации ............................................................................120 Подключение аутентификации через соцсети ...............................................................122 Аутентификация Facebook ...........................................................................................123 Аутентификация Twitter ..............................................................................................128 Аутентификация Google ..............................................................................................130 Резюме ...............................................................................................................................134 8 Содержание Глава 5. Совместное использование содержимого сайта .............135 Сохранение изображений в закладки на сайте ..............................................................135 Создание модели изображения ...................................................................................136 Добавление отношения «многие ко многим» ............................................................137 Регистрация модели изображения на сайте администрирования ...........................138 Использование изображений с других сайтов ...............................................................138 Валидация полей формы .............................................................................................139 Переопределение метода save() модельной формы ..................................................140 Букмарклет на jQuery ...................................................................................................143 Создание обработчика для картинки ..............................................................................151 Добавление превью для изображений ............................................................................153 Реализация AJAX-запросов с jQuery ................................................................................154 Подключение jQuery ....................................................................................................156 Защита от межсайтовых запросов в AJAX ..................................................................156 Выполнение AJAX-запросов с jQuery ..........................................................................158 Создание собственных декораторов ...............................................................................160 Постраничный вывод с помощью AJAX ..........................................................................161 Резюме ...............................................................................................................................165 Глава 6. Отслеживание действий пользователей ..............................166 Реализация системы подписок ........................................................................................166 Отношение «многие ко многим» с промежуточной моделью ..................................166 Создание обработчиков списка пользователей и подробностей профиля ..............169 AJAX-обработчик для создания подписчика ..............................................................173 Добавление новостной ленты ..........................................................................................175 Использование подсистемы типов содержимого ......................................................176 Добавление обобщенных отношений ........................................................................177 Устранение дублирования новостей в ленте ..............................................................179 Добавление активности в новостную ленту ...............................................................180 Отображение ленты новостей ....................................................................................181 Оптимизация QuerySetʼа со связанными объектами ................................................181 Создание шаблонов для новостной ленты .................................................................182 Использование сигналов Django .....................................................................................184 Работа с сигналами ......................................................................................................184 Конфигурационные классы приложений ...................................................................186 Использование Redis для хранения представлений объектов ......................................188 Установка Redis.............................................................................................................188 Использование Redis в Python-коде ...........................................................................190 Сохранение представлений объектов в Redis ............................................................191 Хранение рейтинга объектов в Redis ..........................................................................192 Следующие шаги с Redis ..............................................................................................194 Резюме ...............................................................................................................................195 Глава 7. Создание онлайн-магазина ............................................................196 Создание проекта .............................................................................................................196 Добавление моделей каталога товаров ......................................................................197 Содержание 9 Регистрация моделей каталога на сайте администрирования .................................199 Реализация обработчиков для каталога ....................................................................200 Добавление шаблонов для отображения страниц каталога ......................................202 Добавление корзины покупок .........................................................................................206 Использование сессий Django .....................................................................................206 Настройки сессий .........................................................................................................207 Время жизни сессии .....................................................................................................207 Хранение данных корзины в сессии ...........................................................................208 Обработка действий с корзиной покупок ..................................................................211 Создание контекстного процессора для корзины .....................................................217 Регистрация заказов .........................................................................................................220 Создание моделей заказа ............................................................................................220 Добавление моделей на сайт администрирования ...................................................221 Обработка заказов покупателей .................................................................................222 Выполнение асинхронных задач с Celery .......................................................................226 Установка Celery ...........................................................................................................227 Установка RabbitMQ .....................................................................................................227 Подключение Celery к Django-проекту .......................................................................228 Добавление асинхронных задач .................................................................................228 Мониторинг Celery .......................................................................................................230 Резюме ...............................................................................................................................231 Глава 8. Управление заказами и платежами .........................................232 Подключение платежного шлюза ....................................................................................232 Создание аккаунта Braintree .......................................................................................233 Установка Python-приложения Braintree ...................................................................234 Интеграция платежного шлюза в проект ...................................................................235 Тестирование платежей ...............................................................................................241 Запуск в боевом режиме ..............................................................................................243 Экспорт заказов в CSV-файл .......................................................................................244 Добавление собственных действий на сайте администрирования ..........................244 Расширение сайта администрирования .........................................................................246 Генерация PDF-счетов ......................................................................................................250 Установка WeasyPrint ...................................................................................................251 Создание PDF-шаблона ...............................................................................................251 Формирование PDF-файлов ........................................................................................252 Отправка PDF-файла на электронную почту .............................................................255 Резюме ...............................................................................................................................256 Глава 9. Расширение онлайн-магазина ....................................................257 Реализация системы купонов ..........................................................................................257 Создание моделей ........................................................................................................258 Добавление оплаты купонами ....................................................................................259 Обработка покупок по купонам ..................................................................................265 Добавление интернационализации и локализации сайта ............................................267 Интернационализация Django ....................................................................................267 Подготовка проекта к интернационализации ...........................................................269