Register · · Password forgotten? · |
Профессионал
|
![]() |
Home » Books and magazines » Computer literature » Web design and programming |
DL-List and Torrent activity | |
Size: 8 MB | Registered: 9 months 7 days | Completed: 3 times | |
|
Author | Message | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Download WYSIWYG ® Gender: Longevity: 10 years Posts: 1526 |
Django 4. Практика создания веб-сайтов на Python
Год издания: 2023 Автор: Дронов Владимир Издательство: БХВ-Петербург ISBN: 978-5-9775-1774-4 Серия: Профессиональное программирование Язык: Русский Формат: PDF Качество: Издательский макет или текст (eBook) Количество страниц: 791 Описание: Книга посвящена разработке веб-сайтов на языке Python с применением веб-фреймворка Django. Представлены новинки Django 4 и дано наиболее полное описание его инструментов: моделей, контроллеров, шаблонов, средств обработки пользовательского ввода, включая выгруженные файлы, разграничения доступа, посредников, сигналов, инструментов для отправки электронной почты, кеширования и пр. Рассмотрены дополнительные библиотеки, производящие обработку BBCode, CAPTCHA, вывод графических миниатюр, аутентификацию через социальные сети (в частности, «ВКонтакте»), интеграцию с Bootstrap. Рассказано о программировании веб-служб REST, использовании и настройке административного веб-сайта Django, публикации сайтов с помощью веб-сервера Uvicorn, работе с базами данных PostgreSQL, локализации строк, форматов и временных зон. Подробно описано создание полнофункционального веб-сайта – электронной доски объявлений. ОглавлениеПредисловие ............................................................................................................................... 19Что такое веб-фреймворк? ........................................................................................................... 19 Почему Django? ........................................................................................................................... 20 Что нового в Django 4.1 и новой книге? ......................................................................................... 21 Использованные программные продукты ....................................................................................... 21 Типографские соглашения ............................................................................................................ 22 ЧАСТЬ I. ВВОДНЫЙ КУРС .............................................................................................................. 25 Глава 1. Основные понятия Django. Вывод данных ......................................................................... 27 1.1. Установка фреймворка ........................................................................................................... 27 1.2. Проект Django ....................................................................................................................... 28 1.3. Отладочный веб-сервер Django ............................................................................................... 29 1.4. Приложения........................................................................................................................... 30 1.5. Контроллеры ......................................................................................................................... 32 1.6. Маршруты и маршрутизатор .................................................................................................... 33 1.7. Модели .................................................................................................................................. 36 1.8. Миграции ............................................................................................................................... 38 1.9. Консоль Django ....................................................................................................................... 40 1.10. Работа с моделями ................................................................................................................ 40 1.11. Шаблоны ............................................................................................................................... 44 1.12. Контекст шаблона, рендеринг и сокращения ........................................................................ 46 1.13. Административный веб-сайт Django ..................................................................................... 47 1.14. Параметры полей и моделей ................................................................................................ 52 1.15. Редактор модели ................................................................................................................... 53 Глава 2. Связи. Ввод данных. Статические файлы .......................................................................... 56 2.1. Связи между моделями .......................................................................................................... 56 2.2. Строковое представление модели ......................................................................................... 58 2.3. URL-параметры и параметризованные запросы ..................................................................... 59 2.4. Обратное разрешение интернет-адресов .............................................................................. 63 2.5. Формы, связанные с моделями .............................................................................................. 65 2.6. Контроллеры-классы .............................................................................................................. 65 2.7. Наследование шаблонов......................................................................................................... 68 2.8. Статические файлы ................................................................................................................. 71 ЧАСТЬ II. БАЗОВЫЕ ИНСТРУМЕНТЫ DJANGO .................................................................................... 75 Глава 3. Создание и настройка проекта .......................................................................................... 77 3.1. Подготовка к работе ............................................................................................................... 77 3.2. Создание проекта Django ....................................................................................................... 79 3.3. Настройки проекта ................................................................................................................. 79 3.3.1. Основные настройки ........................................................................................................ 79 3.3.2. Параметры баз данных ..................................................................................................... 80 3.3.3. Список зарегистрированных приложений ...................................................................... 83 3.3.4. Список зарегистрированных посредников ..................................................................... 84 3.3.5. Языковые настройки ........................................................................................................ 85 3.3.6. Доступ к настройкам проекта из программного кода ................................................... 88 3.3.7. Создание собственных настроек проекта ....................................................................... 88 3.4. Создание, настройка и регистрация приложений ................................................................ 89 3.4.1. Создание приложений ...................................................................................................... 89 3.4.2. Настройки приложений .................................................................................................... 89 3.4.3. Регистрация приложений в проекте ................................................................................ 90 3.5. Средства отладки .................................................................................................................... 91 3.5.1. Отладочный веб-сервер Django ....................................................................................... 91 3.5.2. Веб-страница сообщения об ошибке .............................................................................. 92 3.6. Работа с несколькими базами данных .................................................................................. 94 3.6.1. Регистрация используемых баз данных .......................................................................... 94 3.6.2. Диспетчеризация данных ................................................................................................. 95 3.6.2.1. Автоматическая диспетчеризация данных .......................................................................... 95 3.6.2.2. Указание базы данных в административных командах ....................................................... 98 3.6.2.3. Ручная диспетчеризация данных ...................................................................................... 99 Глава 4. Модели: базовые инструменты ........................................................................................ 100 4.1. Объявление моделей ............................................................................................................. 100 4.2. Объявление полей модели ................................................................................................... 101 4.2.1. Параметры, поддерживаемые полями всех типов ............................................................. 101 4.2.2. Классы полей моделей ................................................................................................... 103 4.2.3. Создание полей со списком ........................................................................................... 107 4.3. Создание связей между моделями ....................................................................................... 110 4.3.1. Связь «один-со-многими» .............................................................................................. 110 4.3.2. Связь «один-с-одним» .................................................................................................... 114 4.3.3. Связь «многие-со-многими» .......................................................................................... 115 4.4. Параметры самой модели .................................................................................................... 117 4.4.1. Получение доступа к параметрам модели из программного кода ......................................... 124 4.5. Интернет-адрес модели и его формирование ..................................................................... 124 4.6. Методы модели ..................................................................................................................... 125 4.7. Валидация модели. Валидаторы .......................................................................................... 127 4.7.1. Стандартные валидаторы Django .................................................................................. 127 4.7.2. Вывод собственных сообщений об ошибках ............................................................... 131 4.7.3. Написание своих валидаторов ....................................................................................... 133 4.7.4. Валидация модели .......................................................................................................... 134 4.8. Создание моделей на основе существующих баз данных ................................................. 136 Глава 5. Миграции .................................................................................................................... 137 5.1. Генерирование миграций ..................................................................................................... 137 5.2. Модули миграций ................................................................................................................. 139 5.3. Выполнение миграций ......................................................................................................... 139 5.4. Вывод списка миграций ....................................................................................................... 141 5.5. Оптимизация миграций ........................................................................................................ 141 5.6. Слияние миграций ................................................................................................................ 142 5.7. Очистка моделей ................................................................................................................... 143 5.8. Отмена миграций .................................................................................................................. 144 Глава 6. Запись данных................................................................................................................. 145 6.1. Правка записей ...................................................................................................................... 145 6.2. Создание записей .................................................................................................................. 146 6.3. Занесение значений в поля разных типов ............................................................................... 147 6.4. Сохранение записей .............................................................................................................. 149 6.4.1. Сохранение копий записей в разных базах данных .............................................................. 150 6.5. Удаление записей.................................................................................................................. 151 6.6. Обработка связанных записей ............................................................................................. 151 6.6.1. Обработка связи «один-со-многими» ............................................................................ 152 6.6.2. Обработка связи «один-с-одним» .................................................................................. 153 6.6.3. Обработка связи «многие-со-многими» ........................................................................ 154 6.7. Произвольное переупорядочивание записей ...................................................................... 156 6.8. Массовые добавление, правка и удаление записей ............................................................ 156 6.9. Выполнение валидации модели ........................................................................................... 159 6.10. Асинхронная запись данных .............................................................................................. 160 Глава 7. Выборка данных .......................................................................................................... 161 7.1. Извлечение значений из полей записи ................................................................................ 161 7.1.1. Получение значений из полей разных типов ..................................................................... 161 7.2. Доступ к связанным записям ............................................................................................... 162 7.3. Выборка записей ................................................................................................................... 164 7.3.1. Выборка всех записей .................................................................................................... 164 7.3.2. Извлечение одной записи ............................................................................................... 165 7.3.3. Получение числа записей в наборе ............................................................................... 166 7.3.4. Поиск одной записи ........................................................................................................ 167 7.3.5. Фильтрация записей ....................................................................................................... 168 7.3.6. Написание условий фильтрации .................................................................................... 169 7.3.6.1. Написание условий фильтрации по значениям полей связанных записей ....................... 172 7.3.6.2. Написание условий фильтрации по значениям полей типа JSON ................................... 173 7.3.6.3. Сравнение со значениями других полей. Функциональные выражения .......................... 175 7.3.6.4. Сложные условия фильтрации. Выражения сравнения ................................................. 176 7.3.7. Выборка уникальных записей ....................................................................................... 177 7.3.8. Выборка указанного числа записей .............................................................................. 178 7.3.9. Экономная выборка записей .......................................................................................... 178 7.4. Сортировка записей .............................................................................................................. 179 7.5. Агрегатные вычисления ....................................................................................................... 181 7.5.1. Агрегатные вычисления по всем записям набора ........................................................ 181 7.5.2. Агрегатные вычисления по связанным записям .......................................................... 182 7.5.3. Агрегатные функции ...................................................................................................... 184 7.6. Вычисляемые поля ............................................................................................................... 186 7.7. Функциональные выражения: расширенные инструменты .............................................. 187 7.7.1. Функции СУБД ............................................................................................................... 187 7.7.1.1. Функции для работы со строками ..................................................................... 187 7.7.1.2. Функции для работы с числами ......................................................................... 190 7.7.1.3. Функции для работы с датой и временем ......................................................... 192 7.7.1.4. Функции для сравнения и преобразования значений....................................... 193 7.7.2. Условные выражения СУБД .......................................................................................... 195 7.7.3. Вложенные запросы ....................................................................................................... 196 7.8. Объединение наборов записей ............................................................................................ 198 7.9. Извлечение значений только из заданных полей ............................................................... 198 7.10. Указание базы данных для выборки записей ................................................................... 201 7.11. Асинхронная выборка данных ........................................................................................... 201 Глава 8. Маршрутизация ........................................................................................................... 203 8.1. Как работает маршрутизатор? ............................................................................................. 203 8.1.1. Списки маршрутов уровня проекта и уровня приложения ................................................... 204 8.2. Объявление маршрутов ........................................................................................................ 205 8.3. Передача данных в контроллеры......................................................................................... 207 8.4. Именованные маршруты ...................................................................................................... 208 8.5. Имена приложений ............................................................................................................... 208 8.6. Псевдонимы приложений .................................................................................................... 209 8.7. Указание шаблонных путей в виде регулярных выражений ................................................... 210 8.8. Настройки маршрутизатора ................................................................................................. 211 Глава 9. Контроллеры-функции .................................................................................................. 212 9.1. Написание контроллеров-функций ..................................................................................... 212 9.1.1. Контроллеры, выполняющие одну задачу .................................................................... 213 9.1.2. Контроллеры, выполняющие несколько задач ............................................................ 214 9.2. Получение сведений о запросе ............................................................................................ 215 9.3. Формирование ответа ........................................................................................................... 218 9.3.1. Низкоуровневые средства для формирования ответа.................................................. 218 9.3.2. Формирование ответа на основе шаблона .................................................................... 220 9.3.3. Класс TemplateResponse: отложенный рендеринг шаблонов ...................................... 221 9.4. Перенаправление .................................................................................................................. 222 9.5. Обратное разрешение интернет-адресов ............................................................................ 223 9.6. Уведомление об ошибках и особых ситуациях .................................................................. 224 9.7. Специальные ответы ............................................................................................................ 226 9.7.1. Потоковый ответ ............................................................................................................. 226 9.7.2. Отправка файлов ............................................................................................................. 227 9.7.3. Отправка данных в формате JSON ................................................................................ 227 9.8. Сокращения Django .............................................................................................................. 228 9.9. Программное разрешение интернет-адресов ..................................................................... 229 9.10. Дополнительные настройки контроллеров....................................................................... 231 9.11. Асинхронные контроллеры-функции ............................................................................... 232 Глава 10. Контроллеры-классы ................................................................................................ 235 10.1. Введение в контроллеры-классы ....................................................................................... 235 10.2. Базовые контроллеры-классы ............................................................................................ 236 10.2.1. Контроллер View: диспетчеризация по HTTP-методу ............................................... 236 10.2.2. Примесь ContextMixin: создание контекста шаблона ................................................ 238 10.2.3. Примесь TemplateResponseMixin: рендеринг шаблона .............................................. 238 10.2.4. Контроллер TemplateView: все вместе ........................................................................ 239 10.3. Классы, выводящие одну запись ....................................................................................... 240 10.3.1. Примесь SingleObjectMixin: поиск записи .................................................................. 240 10.3.2. Примесь SingleObjectTemplateResponseMixin: рендеринг шаблона на основе найденной записи .................................................................................................... 241 10.3.3. Контроллер DetailView: все вместе ............................................................................. 242 10.4. Классы, выводящие наборы записей ................................................................................. 243 10.4.1. Примесь MultipleObjectMixin: извлечение набора записей ................................................. 243 10.4.2. Примесь MultipleObjectTemplateResponseMixin: рендеринг шаблона на основе набора записей ......................................................................................................... 246 10.4.3. Контроллер ListView: все вместе ................................................................................. 246 10.5. Классы, работающие с формами ....................................................................................... 247 10.5.1. Классы для вывода и валидации форм........................................................................ 247 10.5.1.1. Примесь FormMixin: создание формы ............................................................ 247 10.5.1.2. Контроллер ProcessFormView: вывод и обработка формы ........................... 249 10.5.1.3. Контроллер-класс FormView: создание, вывод и обработка формы ............ 249 10.5.2. Классы для добавления, правки и удаления записей ................................................. 250 10.5.2.1. Примесь ModelFormMixin: создание формы, связанной с моделью............. 251 10.5.2.2. Контроллер CreateView: создание новой записи ............................................ 252 10.5.2.3. Контроллер UpdateView: исправление записи ................................................ 252 10.5.2.4. Примесь DeletionMixin: удаление записи ........................................................ 253 10.5.2.5. Контроллер DeleteView: удаление записи с подтверждением ....................... 254 10.6. Классы для вывода хронологических списков ................................................................. 256 10.6.1. Вывод последних записей ............................................................................................ 256 10.6.1.1. Примесь DateMixin: фильтрация записей по дате .......................................... 256 10.6.1.2. Контроллер BaseDateListView: базовый класс ................................................ 256 10.6.1.3. Контроллер ArchiveIndexView: вывод последних записей ............................. 257 10.6.2. Вывод записей по годам............................................................................................... 258 10.6.2.1. Примесь YearMixin: извлечение года .............................................................. 258 10.6.2.2. Контроллер YearArchiveView: вывод записей за год ...................................... 259 10.6.3. Вывод записей по месяцам .......................................................................................... 260 10.6.3.1. Примесь MonthMixin: извлечение месяца ....................................................... 260 10.6.3.2. Контроллер MonthArchiveView: вывод записей за месяц ............................... 260 10.6.4. Вывод записей по неделям........................................................................................... 261 10.6.4.1. Примесь WeekMixin: извлечение номера недели ............................................ 261 10.6.4.2. Контроллер WeekArchiveView: вывод записей за неделю .............................. 262 10.6.5. Вывод записей по дням ................................................................................................ 262 10.6.5.1. Примесь DayMixin: извлечение заданного числа ........................................... 263 10.6.5.2. Контроллер DayArchiveView: вывод записей за день ..................................... 263 10.6.6. Контроллер TodayArchiveView: вывод записей за текущее число ............................ 264 10.6.7. Контроллер DateDetailView: вывод одной записи за указанное число .................... 264 10.7. Контроллер RedirectView: перенаправление..................................................................... 265 10.8. Контроллеры-классы смешанной функциональности ..................................................... 267 10.9. Асинхронные контроллеры-классы .................................................................................. 268 Глава 11. Шаблоны и статические файлы: базовые инструменты................................................ 270 11.1. Настройки проекта, касающиеся шаблонов ..................................................................... 270 11.2. Вывод данных. Директивы ................................................................................................ 275 11.3. Теги шаблонизатора ........................................................................................................... 276 11.4. Фильтры............................................................................................................................... 283 11.5. Наследование шаблонов..................................................................................................... 292 11.6. Включение шаблонов ......................................................................................................... 294 11.7. Обработка статических файлов ......................................................................................... 295 11.7.1. Настройка подсистемы статических файлов .............................................................. 295 11.7.2. Формирование интернет-адресов статических файлов ............................................. 297 Глава 12. Пагинатор ................................................................................................... 299 12.1. Класс Paginator: сам пагинатор. Создание пагинатора ................................................... 299 12.2. Класс Page: часть пагинатора. Вывод пагинатора ........................................................... 302 Глава 13. Формы, связанные с моделями ................................................................................ 303 13.1. Создание форм, связанных с моделями ............................................................................ 303 13.1.1. Создание форм с помощью фабрики классов ............................................................ 303 13.1.2. Создание форм путем быстрого объявления .............................................................. 305 13.1.3. Создание форм путем полного объявления ................................................................ 306 13.1.3.1. Как выполняется полное объявление? ............................................................ 306 13.1.3.2. Параметры, поддерживаемые всеми типами полей ....................................... 308 13.1.3.3. Классы полей форм ........................................................................................... 309 13.1.3.4. Классы полей форм, применяемые по умолчанию ........................................ 313 13.1.4. Задание элементов управления .................................................................................... 314 13.1.4.1. Классы элементов управления ......................................................................... 314 13.1.4.2. Элементы управления, применяемые по умолчанию .................................... 317 13.2. Обработка форм .................................................................................................................. 318 13.2.1. Добавление записи посредством формы .................................................................... 318 13.2.1.1. Создание формы для добавления записи ........................................................ 318 13.2.1.2. Повторное создание формы ............................................................................. 318 13.2.1.3. Валидация данных, занесенных в форму ........................................................ 319 13.2.1.4. Сохранение данных, занесенных в форму ...................................................... 320 13.2.1.5. Доступ к данным, занесенным в форму .......................................................... 321 13.2.2. Правка записи посредством формы ............................................................................ 321 13.2.3. Некоторые соображения касательно удаления записей ............................................ 322 13.3. Вывод форм на экран ......................................................................................................... 323 13.3.1. Быстрый вывод форм ................................................................................................... 323 13.3.2. Расширенный вывод форм ........................................................................................... 325 13.4. Валидация в формах ........................................................................................................... 327 13.4.1. Валидация полей формы .............................................................................................. 327 13.4.1.1. Валидация с применением валидаторов ..................................................................... 327 13.4.1.2. Валидация путем переопределения методов формы ................................................... 328 13.4.2. Валидация формы ......................................................................................................... 328 Глава 14. Наборы форм, связанные с моделями ...................................................................... 330 14.1. Создание наборов форм, связанных с моделями ............................................................. 330 14.2. Обработка наборов форм, связанных с моделями ........................................................... 334 14.2.1. Создание набора форм, связанного с моделью .......................................................... 334 14.2.2. Повторное создание набора форм ............................................................................... 334 14.2.3. Валидация и сохранение набора форм........................................................................ 335 14.2.4. Доступ к данным, занесенным в набор форм ............................................................. 336 14.2.5. Реализация переупорядочивания записей .................................................................. 337 14.3. Вывод наборов форм на экран ........................................................................................... 338 14.3.1. Быстрый вывод наборов форм .................................................................................... 338 14.3.2. Расширенный вывод наборов форм ............................................................................ 339 14.4. Валидация в наборах форм ................................................................................................ 341 14.5. Встроенные наборы форм .................................................................................................. 342 14.5.1. Создание встроенных наборов форм .......................................................................... 342 14.5.2. Обработка встроенных наборов форм ........................................................................ 342 Глава 15. Разграничение доступа: базовые инструменты ......................................................... 344 15.1. Как работает подсистема разграничения доступа? .......................................................... 344 15.2. Подготовка подсистемы разграничения доступа ............................................................. 345 15.2.1. Настройка подсистемы разграничения доступа ............................................................ 345 15.2.2. Создание суперпользователя ....................................................................................... 346 15.2.3. Смена пароля пользователя ......................................................................................... 347 15.3. Работа со списками пользователей и групп...................................................................... 347 15.3.1. Список пользователей .................................................................................................. 347 15.3.2. Группы пользователей. Список групп ........................................................................ 349 15.4. Вход, выход и служебные процедуры ............................................................................... 350 15.4.1. Контроллер LoginView: вход на сайт .......................................................................... 350 15.4.2. Контроллер LogoutView: выход с сайта ...................................................................... 352 15.4.3. Контроллер PasswordChangeView: смена пароля ...................................................... 354 15.4.4. Контроллер PasswordChangeDoneView: уведомление об успешной смене пароля ........................................................................................................................................ 355 15.4.5. Контроллер PasswordResetView: отправка письма для сброса пароля ..................... 355 15.4.6. Контроллер PasswordResetDoneView: уведомление об отправке письма для сброса пароля ..................................................................................................................... 357 15.4.7. Контроллер PasswordResetConfirmView: собственно сброс пароля ......................... 358 15.4.8. Контроллер PasswordResetCompleteView: уведомление об успешном сбросе пароля ........................................................................................................................................ 359 15.5. Получение сведений о пользователях ............................................................................... 360 15.5.1. Получение сведений о текущем пользователе ........................................................... 360 15.5.2. Получение пользователей, обладающих заданным правом ...................................... 363 15.6. Авторизация ........................................................................................................................ 364 15.6.1. Авторизация в контроллерах ....................................................................................... 364 15.6.1.1. Авторизация в контроллерах-функциях: непосредственные проверки .......................... 364 15.6.1.2. Авторизация в контроллерах-функциях: применение декораторов ............................... 365 15.6.1.3. Авторизация в контроллерах-классах ......................................................................... 367 15.6.2. Авторизация в шаблонах .............................................................................................. 369 ЧАСТЬ III. РАСШИРЕННЫЕ ИНСТРУМЕНТЫ И ДОПОЛНИТЕЛЬНЫЕ БИБЛИОТЕКИ .......................................................................................... 371 Глава 16. Модели: расширенные инструменты ........................................................................... 373 16.1. Управление выборкой полей ............................................................................................. 373 16.2. Связи «многие-со-многими» с дополнительными данными ................................................... 377 16.3. Полиморфные связи ........................................................................................................... 380 16.4. Наследование моделей ....................................................................................................... 384 16.4.1. Прямое наследование моделей .................................................................................... 384 16.4.2. Абстрактные модели .................................................................................................... 386 16.4.3. Прокси-модели .............................................................................................................. 387 16.5. Создание своих диспетчеров записей ............................................................................... 388 16.5.1. Создание диспетчеров записей .................................................................................... 388 16.5.2. Создание диспетчеров обратной связи ....................................................................... 390 16.6. Создание своих наборов записей ...................................................................................... 391 16.7. Управление транзакциями ................................................................................................. 393 16.7.1. Автоматическое управление транзакциями ................................................................. 393 16.7.1.1. Режим по умолчанию: каждая операция — в отдельной транзакции............................ 394 16.7.1.2. Режим атомарных запросов ...................................................................................... 394 16.7.1.3. Режим по умолчанию на уровне контроллера ............................................................. 395 16.7.1.4. Режим атомарных запросов на уровне контроллера .................................................... 395 16.7.2. Ручное управление транзакциями ............................................................................... 397 16.7.3. Обработка подтверждения транзакции ....................................................................... 399 Глава 17. Формы и наборы форм: расширенные инструменты и дополнительная библиотека .................................................................................................. 400 17.1. Формы, не связанные с моделями ..................................................................................... 400 17.2. Наборы форм, не связанные с моделями .......................................................................... 401 17.3. Расширенные средства для вывода форм и наборов форм ............................................... 403 17.3.1. Указание CSS-стилей у форм ...................................................................................... 403 17.3.2. Настройка выводимых форм ....................................................................................... 403 17.3.3. Настройка наборов форм ............................................................................................. 404 17.3.4. Шаблоны форм, наборов форм и элементов управления .......................................... 405 17.3.4.1. Шаблоны форм .................................................................................................. 406 17.3.4.2. Шаблоны наборов форм ................................................................................... 408 17.3.4.3. Шаблоны элементов управления ..................................................................... 408 17.4. Библиотека Django Simple Captcha: поддержка CAPTCHA ............................................ 410 17.4.1. Установка Django Simple Captcha ............................................................................... 411 17.4.2. Использование Django Simple Captcha ....................................................................... 411 17.4.3. Настройка Django Simple Captcha ............................................................................... 413 17.4.4. Дополнительные команды captcha_clean и captcha_create_pool ............................. 414 17.5. Дополнительные настройки проекта, имеющие отношение к формам ......................... 415 Глава 18. Поддержка баз данных PostgreSQL и библиотека django-localflavor ......................................................................................... 416 18.1. Дополнительные инструменты для поддержки PostgreSQL ........................................... 416 18.1.1. Объявление моделей для работы с PostgreSQL.......................................................... 416 18.1.1.1. Поля, специфические для PostgreSQL ............................................................. 416 18.1.1.2. Индексы PostgreSQL ......................................................................................... 419 18.1.1.3. Операционные выражения ............................................................................... 421 18.1.1.4. Условие ExclusionConstraint ............................................................................ 422 18.1.1.5. Расширения PostgreSQL ................................................................................... 424 18.1.1.6. Валидаторы PostgreSQL ................................................................................... 425 18.1.2. Запись и выборка данных в PostgreSQL ..................................................................... 427 18.1.2.1. Запись и выборка значений полей в PostgreSQL ............................................ 427 18.1.2.2. Фильтрация записей в PostgreSQL .................................................................. 430 18.1.3. Агрегатные функции PostgreSQL ................................................................................ 435 18.1.4. Функции СУБД, специфичные для PostgreSQL ......................................................... 438 18.1.5. Вложенные запросы PostgreSQL ................................................................................. 438 18.1.6. Полнотекстовая фильтрация PostgreSQL ................................................................... 439 18.1.6.1. Модификатор search ......................................................................................... 439 18.1.6.2. Функции СУБД для полнотекстовой фильтрации .......................................... 440 18.1.6.3. Функции СУБД для фильтрации по похожим словам ................................... 445 18.1.7. Создание форм для работы с PostgreSQL ................................................................... 447 18.1.7.1. Поля форм, специфические для PostgreSQL ................................................... 447 18.1.7.2. Элементы управления, специфические для PostgreSQL ................................ 449 18.2. Библиотека django-localflavor: дополнительные поля для моделей и форм .................. 449 18.2.1. Установка django-localflavor ........................................................................................ 450 18.2.2. Поля модели, предоставляемые django-localflavor .................................................... 450 18.2.3. Поля формы, предоставляемые django-localflavor ..................................................... 451 18.2.4. Элементы управления, предоставляемые django-localflavor ..................................... 451 Глава 19. Шаблоны: расширенные инструменты и дополнительные библиотеки ............................................................................................ 452 19.1. Библиотека django-precise-bbcode: поддержка BBCode .................................................. 452 19.1.1. Установка django-precise-bbcode ................................................................................. 452 19.1.2. Поддерживаемые BBCode-теги ................................................................................... 453 19.1.3. Обработка BBCode ....................................................................................................... 454 19.1.3.1. Обработка BBCode при выводе ....................................................................... 454 19.1.3.2. Хранение BBCode в модели ............................................................................. 455 19.1.4. Создание дополнительных BBCode-тегов .................................................................. 456 19.1.5. Создание графических смайликов .............................................................................. 458 19.1.6. Настройка django-precise-bbcode ................................................................................. 458 19.2. Библиотека django-bootstrap5: интеграция с Bootstrap 5 ................................................. 459 19.2.1. Установка django-bootstrap5 ........................................................................................ 460 19.2.2. Использование django-bootstrap5 ................................................................................ 460 19.2.3. Настройка django-bootstrap5 ........................................................................................ 465 19.3. Написание своих фильтров и тегов ................................................................................... 467 19.3.1. Организация исходного кода ....................................................................................... 467 19.3.2. Написание фильтров ..................................................................................................... 467 19.3.2.1. Написание и использование простейших фильтров ...................................... 467 19.3.2.2. Управление заменой недопустимых знаков HTML ....................................... 469 19.3.3. Написание тегов ............................................................................................................ 470 19.3.3.1. Написание тегов, выводящих элементарные значения .................................. 470 19.3.3.2. Написание шаблонных тегов ........................................................................... 472 19.3.4. Регистрация фильтров и тегов ..................................................................................... 473 19.4. Переопределение шаблонов............................................................................................... 474 Глава 20. Обработка выгруженных файлов .......................................................................... 476 20.1. Подготовка подсистемы обработки выгруженных файлов ............................................. 476 20.1.1. Настройка подсистемы обработки выгруженных файлов ......................................... 476 20.1.2. Указание маршрута для выгруженных файлов .......................................................... 478 20.2. Хранение файлов в моделях .............................................................................................. 479 20.2.1. Типы полей модели, предназначенные для хранения файлов .................................. 479 20.2.2. Поля форм, валидаторы и элементы управления, служащие для указания файлов ........................................................................................................................................ 481 20.2.3. Обработка выгруженных файлов ................................................................................ 482 20.2.4. Вывод выгруженных файлов ....................................................................................... 484 20.2.5. Удаление выгруженного файла ................................................................................... 485 20.3. Хранение путей к файлам в моделях ................................................................................ 485 20.4. Низкоуровневые средства для сохранения выгруженных файлов ................................. 486 20.4.1. Класс UploadedFile: выгруженный файл. Сохранение выгруженных файлов ............... 486 20.4.2. Вывод выгруженных файлов низкоуровневыми средствами ..................................... 488 20.5. Библиотека django-cleanup: автоматическое удаление ненужных файлов .................... 489 20.6. Библиотека easy-thumbnails: вывод миниатюр ................................................................. 490 20.6.1. Установка easy-thumbnails............................................................................................ 490 20.6.2. Настройка easy-thumbnails ........................................................................................... 491 20.6.2.1. Пресеты миниатюр ........................................................................................... 491 20.6.2.2. Остальные настройки библиотеки ................................................................... 493 20.6.3. Вывод миниатюр в шаблонах ...................................................................................... 495 20.6.4. Хранение миниатюр в моделях ................................................................................... 496 20.6.5. Дополнительная команда thumbnail_cleanup ............................................................. 497 Глава 21. Разграничение доступа: расширенные инструменты и дополнительная библиотека ............................................................................................. 498 21.1. Настройки проекта, касающиеся разграничения доступа ............................................... 498 21.2. Работа с пользователями .................................................................................................... 499 21.2.1. Создание пользователей ............................................................................................... 499 21.2.2. Работа с паролями ........................................................................................................ 499 21.3. Вход и выход ....................................................................................................................... 500 21.4. Валидация паролей ............................................................................................................. 501 21.4.1. Стандартные валидаторы паролей .............................................................................. 501 21.4.2. Написание своих валидаторов паролей ...................................................................... 503 21.4.3. Выполнение валидации паролей ................................................................................. 504 21.5. Библиотека Python Social Auth: регистрация и вход через социальные сети .................... 505 21.5.1. Создание приложения «ВКонтакте» ........................................................................... 505 21.5.2. Установка и настройка Python Social Auth ................................................................. 506 21.5.3. Использование Python Social Auth .............................................................................. 508 21.6. Создание своей модели пользователя ............................................................................... 508 21.7. Создание своих прав пользователя ................................................................................... 510 Глава 22. Посредники и обработчики контекста .......................................................................... 511 22.1. Посредники ......................................................................................................................... 511 22.1.1. Стандартные посредники ............................................................................................. 511 22.1.2. Порядок выполнения посредников ............................................................................. 512 22.1.3. Написание своих посредников .................................................................................... 513 22.1.3.1. Посредники-функции ........................................................................................ 513 22.1.3.2. Посредники-классы ........................................................................................... 514 22.1.3.3. Асинхронные и универсальные посредники ......................................................... 516 22.2. Обработчики контекста ...................................................................................................... 519 Глава 23. Cookie, сессии, всплывающие сообщения и подписывание данных ............................................................................................................... 521 23.1. Cookie .................................................................................................................................. 521 23.2. Сессии .................................................................................................................................. 524 23.2.1. Настройка сессий .......................................................................................................... 524 23.2.2. Использование сессий .................................................................................................. 526 23.2.3. Дополнительная команда clearsessions ....................................................................... 528 23.3. Всплывающие сообщения .................................................................................................. 528 23.3.1. Настройка всплывающих сообщений ......................................................................... 528 23.3.2. Уровни всплывающих сообщений .............................................................................. 529 23.3.3. Создание всплывающих сообщений ........................................................................... 530 23.3.4. Вывод всплывающих сообщений ................................................................................ 531 23.3.5. Объявление своих уровней всплывающих сообщений .................................................. 533 23.4. Подписывание данных ....................................................................................................... 533 Глава 24. Сигналы ............................................................................................................... 537 24.1. Обработка сигналов ............................................................................................................ 537 24.1.1. Объявление обработчиков сигналов ........................................................................... 537 24.1.2. Явная привязка обработчиков к сигналам .................................................................. 538 24.1.3. Неявная привязка обработчиков к сигналам .............................................................. 539 24.1.4. Отмена привязки обработчиков к сигналам ............................................................... 540 24.2. Встроенные сигналы Django .............................................................................................. 540 24.3. Объявление своих сигналов ............................................................................................... 545 Глава 25. Отправка электронных писем ................................................................................ 547 25.1. Настройка подсистемы отправки электронных писем .................................................... 547 25.2. Низкоуровневые инструменты для отправки писем ........................................................ 549 25.2.1. Класс EmailMessage: обычное электронное письмо .................................................. 549 25.2.2. Формирование писем на основе шаблонов ................................................................ 551 25.2.3. Использование соединений. Массовая рассылка писем ........................................... 551 25.2.4. Класс EmailMultiAlternatives: составное письмо ........................................................ 552 25.3. Высокоуровневые инструменты для отправки писем ..................................................... 553 25.3.1. Отправка писем по произвольным адресам ............................................................... 553 25.3.2. Отправка писем зарегистрированным пользователям .............................................. 554 25.3.3. Отправка писем администраторам и редакторам сайта ............................................ 555 25.4. Отправка тестового электронного письма ........................................................................ 556 Глава 26. Кеширование .............................................................................................. 557 26.1. Кеширование на стороне сервера ...................................................................................... 557 26.1.1. Подготовка подсистемы кеширования на стороне сервера ...................................... 557 26.1.1.1. Настройка подсистемы кеширования на стороне сервера ............................... 557 26.1.1.2. Создание таблицы для хранения кеша ............................................................ 562 26.1.2. Высокоуровневые средства кеширования .................................................................. 562 26.1.2.1. Кеширование всего веб-сайта .......................................................................... 562 26.1.2.2. Кеширование на уровне отдельных контроллеров ........................................ 564 26.1.2.3. Управление кешированием .............................................................................. 564 26.1.3. Низкоуровневые средства кеширования .................................................................... 565 26.1.3.1. Кеширование фрагментов веб-страниц ........................................................... 566 26.1.3.2. Кеширование произвольных значений ............................................................ 567 26.1.3.3. Асинхронные инструменты для кеширования произвольных значений ................ 570 26.2. Кеширование на стороне клиента ..................................................................................... 570 26.2.1. Автоматическая обработка заголовков ....................................................................... 570 26.2.2. Управление кешированием в контроллерах ............................................................... 571 26.2.2.1. Условная обработка запросов .......................................................................... 571 26.2.2.2. Прямое указание параметров кеширования.................................................... 573 26.2.2.3. Запрет кеширования ......................................................................................... 573 26.2.3. Управление кешированием в посредниках ................................................................ 574 Глава 27. Локализация ............................................................................................... 576 27.1. Локализация строк .............................................................................................................. 576 27.1.1. Пометка локализуемых строк ...................................................................................... 576 27.1.1.1. Пометка локализуемых строк в коде шаблонов ............................................. 577 27.1.1.2. Пометка локализуемых строк в Python-коде .................................................. 579 27.1.2. Создание языковых модулей ....................................................................................... 582 27.1.2.1. Генерирование языковых модулей .................................................................. 582 27.1.2.2. Перевод локализуемых строк ........................................................................... 583 27.1.2.3. Компиляция языковых модулей ...................................................................... 585 27.1.3. Переключение веб-сайта на требуемый язык ............................................................. 586 27.1.3.1. Автоматическое переключение на требуемый язык ...................................... 586 27.1.3.2. Вывод сведений о поддерживаемых языках ................................................... 587 27.1.3.3. Создание языковых редакций веб-сайта ......................................................... 589 27.1.3.4. Переключение на требуемый язык без создания языковых редакций веб-сайта ........................................................................................................................... 591 27.1.4. Дополнительные инструменты для локализации строк ............................................ 593 27.1.5. Настройка локализации строк ..................................................................................... 593 27.2. Локализация форматов ....................................................................................................... 595 27.3. Локализация временны´ х зон .............................................................................................. 596 27.3.1. Реализация переключения веб-сайта на требуемую временну´ю зону ...................... 596 27.3.2. Вывод значений времени и временны´ х отметок в разных временны´ х зонах .......... 598 Глава 28. Административный веб-сайт Django ...................................................................... 601 28.1. Подготовка административного веб-сайта к работе ........................................................ 601 28.2. Регистрация моделей на административном веб-сайте ................................................... 602 28.3. Редакторы моделей ............................................................................................................. 603 28.3.1. Параметры списка записей .......................................................................................... 603 28.3.1.1. Параметры списка записей: состав выводимого списка ................................ 603 28.3.1.2. Параметры списка записей: фильтрация и сортировка ................................. 608 28.3.1.3. Параметры списка записей: прочие ................................................................. 612 28.3.2. Параметры страниц добавления и правки записей .................................................... 614 28.3.2.1. Параметры страниц добавления и правки записей: набор выводимых полей .................................................................................................. 614 28.3.2.2. Параметры страниц добавления и правки записей: элементы управления .............. 617 28.3.2.3. Параметры страниц добавления и правки записей: прочие ................................... 620 28.3.3. Регистрация редакторов на административном веб-сайте ........................................ 621 28.4. Встроенные редакторы ....................................................................................................... 622 28.4.1. Объявление встроенного редактора ............................................................................ 622 28.4.2. Параметры встроенного редактора ............................................................................. 622 28.4.3. Регистрация встроенного редактора ........................................................................... 624 28.5. Действия .............................................................................................................................. 625 Глава 29. Разработка веб-служб REST. Библиотека Django REST framework .................................................................................... 628 29.1. Установка и подготовка к работе Django REST framework ............................................ 629 29.2. Введение в Django REST framework. Вывод данных ....................................................... 631 29.2.1. Сериализаторы .............................................................................................................. 631 29.2.2. Веб-представление JSON ............................................................................................. 632 29.2.3. Вывод данных на стороне клиента .............................................................................. 634 29.2.4. Первый принцип REST: идентификация ресурса по интернет-адресу ............................... 635 29.3. Ввод и правка данных ........................................................................................................ 637 29.3.1. Второй принцип REST: идентификация действия по HTTP-методу ..................................... 637 29.3.2. Парсеры веб-форм ........................................................................................................ 641 29.4. Контроллеры-классы Django REST framework ................................................................ 642 29.4.1. Контроллер-класс низкого уровня .............................................................................. 642 29.4.2. Контроллеры-классы высокого уровня: комбинированные и простые ........................... 643 29.5. Метаконтроллеры ............................................................................................................... 644 29.6. Разграничение доступа в Django REST framework .......................................................... 646 29.6.1. Третий принцип REST: данные клиента хранятся на стороне клиента ............................. 646 29.6.2. Классы разграничения доступа ................................................................................... 647 Глава 30. Средства журналирования ...................................................................................... 649 30.1. Настройка подсистемы журналирования.......................................................................... 649 30.2. Объект сообщения .............................................................................................................. 650 30.3. Форматировщики ................................................................................................................ 651 30.4. Фильтры............................................................................................................................... 652 30.5. Обработчики ....................................................................................................................... 653 30.6. Регистраторы ....................................................................................................................... 658 30.7. Пример настройки подсистемы журналирования ............................................................ 660 Глава 31. Публикация веб-сайта .............................................................................................. 663 31.1. Подготовка веб-сайта к публикации ................................................................................. 663 31.1.1. Написание шаблонов веб-страниц с сообщениями об ошибках ............................... 663 31.1.2. Указание настроек эксплуатационного режима ......................................................... 664 31.1.3. Удаление ненужных данных ........................................................................................ 666 31.1.4. Окончательная проверка веб-сайта ............................................................................. 666 31.1.5. Настройка веб-сайта для работы по протоколу HTTPS ................................................... 668 31.2. Публикация веб-сайта ........................................................................................................ 672 31.2.1. Публикация посредством Uvicorn ............................................................................... 672 31.2.1.1. Подготовка веб-сайта к публикации посредством Uvicorn ........................................... 673 31.2.1.2. Запуск и остановка Uvicorn ....................................................................................... 674 31.2.2. Другие варианты публикации ...................................................................................... 675 ЧАСТЬ IV. ПРАКТИЧЕСКОЕ ЗАНЯТИЕ: РАЗРАБОТКА ВЕБ-САЙТА ................................................... 677 Глава 32. Дизайн. Вспомогательные веб-страницы .................................................................... 679 32.1. План веб-сайта .................................................................................................................... 679 32.2. Подготовка проекта и приложения main .......................................................................... 680 32.2.1. Создание и настройка проекта..................................................................................... 680 32.2.2. Создание и настройка приложения main .................................................................... 681 32.3. Базовый шаблон .................................................................................................................. 681 32.4. Главная веб-страница ......................................................................................................... 688 32.5. Вспомогательные веб-страницы ........................................................................................ 690 Глава 33. Работа с пользователями и разграничение доступа ........................................................ 693 33.1. Модель пользователя .......................................................................................................... 693 33.2. Основные веб-страницы: входа, профиля и выхода ........................................................ 695 33.2.1. Веб-страница входа ...................................................................................................... 695 33.2.2. Веб-страница пользовательского профиля ................................................................. 697 33.2.3. Реализация выхода ....................................................................................................... 698 33.3. Веб-страницы правки личных данных пользователя ....................................................... 699 33.3.1. Веб-страница правки основных сведений .................................................................. 699 33.3.2. Веб-страница правки пароля........................................................................................ 702 33.4. Веб-страницы регистрации и активации пользователей ................................................. 703 33.4.1. Веб-страницы регистрации нового пользователя ...................................................... 703 33.4.1.1. Форма для занесения сведений о новом пользователе ............................................ 703 33.4.1.2. Средства для регистрации пользователя ................................................................ 705 33.4.1.3. Средства для отправки писем с требованиями активации ......................................... 707 33.4.2. Веб-страницы активации пользователя ...................................................................... 709 33.5. Веб-страница удаления пользователя ............................................................................... 711 33.6. Инструменты для администрирования пользователей .................................................... 713 Глава 34. Рубрики ................................................................................................................. 715 34.1. Модели рубрик .................................................................................................................... 715 34.1.1. Базовая модель рубрик ................................................................................................. 715 34.1.2. Модель надрубрик ........................................................................................................ 716 34.1.3. Модель подрубрик ........................................................................................................ 717 34.2. Инструменты для администрирования рубрик ................................................................ 718 34.3. Вывод списка рубрик в вертикальной панели навигации ............................................... 719 Глава 35. Объявления ................................................................................................ 722 35.1. Подготовка к обработке выгруженных файлов ................................................................ 722 35.2. Модели объявлений и дополнительных иллюстраций .................................................... 723 35.2.1. Модель самих объявлений ........................................................................................... 723 35.2.2. Модель дополнительных иллюстраций ...................................................................... 726 35.2.3. Реализация удаления объявлений в модели пользователя ........................................ 726 35.3. Инструменты для администрирования объявлений ......................................................... 727 35.4. Вывод объявлений .............................................................................................................. 727 35.4.1. Вывод списка объявлений ............................................................................................ 728 35.4.1.1. Форма поиска и контроллер списка объявлений ............................................ 728 35.4.1.2. Реализация корректного возврата .................................................................... 729 35.4.1.3. Шаблон веб-страницы списка объявлений ..................................................... 731 35.4.2. Веб-страница сведений о выбранном объявлении ..................................................... 734 35.4.3. Вывод последних 10 объявлений на главной веб-странице ...................................... 738 35.5. Работа с объявлениями ....................................................................................................... 738 35.5.1. Вывод объявлений, оставленных текущим пользователем ....................................... 738 35.5.2. Добавление, правка и удаление объявлений .............................................................. 739 Глава 36. Комментарии .............................................................................................. 743 36.1. Подготовка к выводу CAPTCHA ....................................................................................... 743 36.2. Модель комментария .......................................................................................................... 744 36.3. Вывод и добавление комментариев .................................................................................. 745 36.4. Отправка уведомлений о новых комментариях ............................................................... 748 Глава 37. Веб-служба REST ....................................................................................... 750 37.1. Веб-служба ................................................................................................................. 750 37.1.1. Подготовка к разработке веб-службы ......................................................................... 750 37.1.2. Список объявлений ....................................................................................................... 751 37.1.3. Сведения о выбранном объявлении ............................................................................ 752 37.1.4. Вывод и добавление комментариев ............................................................................ 753 37.2. Тестовый фронтенд ............................................................................................................ 755 37.2.1. Введение в Angular ....................................................................................................... 755 37.2.2. Подготовка к разработке фронтенда ........................................................................... 756 37.2.3. Метамодуль приложения AppModule. Маршрутизация в Angular ............................ 757 37.2.4. Компонент приложения AppComponent ...................................................................... 761 37.2.5. Служба BbService. Внедрение зависимостей. Объекты-обещания ........................... 762 37.2.6. Компонент списка объявлений BbListComponent. Директивы. Фильтры. Связывание данных .............................................................................................................. 766 37.2.7. Компонент сведений об объявлении BbDetailComponent. Двустороннее связывание данных .......................................................................................... 770 Заключение .......................................................................................................................... 775 Приложение. Описание электронного архива .......................................................................... 777 Предметный указатель ........................................................................................................... 779
|
|||||||||||||||||||||
![]() |
Home » Books and magazines » Computer literature » Web design and programming |
Current time is: 16-Apr 10:02
All times are UTC + 2
You cannot post new topics in this forum
You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum |