В разработке программного обеспечения программисты используют различные инструменты. Они делают исходный код более быстрым, читабельным и простым. Популярным средством программирования на разных языках являются фреймворки.
Фреймворк – это готовый фрагмент кода. Он используется разработчиком специально для того, чтобы быстрее разрабатывать проекты со схожей функциональностью. Некоторые программисты называют фреймворки библиотеками.
У каждого языка программирования имеются свои собственные the frameworks. Некоторые из них являются универсальными и поддерживают сразу несколько синтаксисов. Наглядным примером станет the Django.
Далее предстоит изучить не только этот фреймворк, но и его плюсы/минусы, области применения, основы реализации. Отдельное внимание будет уделено обновлению. Не только данных, но и самого фреймворка, потому что обозначенный процесс может вызывать даже у опытных специалистов некоторые трудности.
Информация, представленная далее, ориентирована в большей степени на тех, кто уже имел опыт в разработке программного обеспечения. Упор будет сделан на Python – основной язык программирования, работающий с Django.
Краткое описание
The Django – свободный и функциональный фреймворк с регулярными обновлениями и открытым исходным кодом. Используется в программировании преимущественно по время веб-разработки. The Django дает возможность быстро писать безопасные веб-программы, а также сайты и интернет-магазины. В процессе функционирования рассматриваемый инструмент использует шаблон проектирования под названием MVC.
У the Django поддерживается значительный ассортимент готовых модулей, настроек и инструментов для web программирования. С его помощью удается реализовать достаточно сложные операции за счет элементарных манипуляций.
Рассматриваемый проект полностью написан на the Python. В шаблонах он может использовать не только Питон, но и:
- CSS;
- HTML;
- JavaScript, включая его фреймворки.
Осваивать Джанго рекомендуется тем, кто планирует заниматься программированием веб-страниц и программ.
Принцип функционирования
The framework – это «каркас», на который разработчик будет «крепить» необходимую ему функциональность. В случае с рассматриваемым инструментом ситуация не меняется. The Django – это основа, к которой программист будет присоединять дополнительные элементы:
- пользовательские интерфейсы;
- сценарии работы компонентов исходного программного обеспечения;
- библиотеки;
- мультимедийные компоненты;
- модули безопасности;
- информационные базы.
Соответствующий инструмент будет отвечать за базовые аспекты работы программы. Сменные (подключаемые) модули – за дополнительные, «специфичные» функции конкретного программного обеспечения.
Фреймворк работает по модели MTV («Модель–Представление–Шаблон»). Инструмент разделяет внутреннюю логику работы сайта, внешний вид страницы для пользователя, а также реакции сервиса на посылаемые запросы и различные воздействия:
- Модель – используется для обеспечения внутренней работы сайта. Сюда можно отнести подключение к базе данных, выбор формата хранения данных, иные опции.
- Представление будет определять данные, необходимые для демонстрации пользователю. После этого система отправит информацию туда, где она отображается. Представление будет принимать запросы от пользователей и выдает характерную реакцию. Пример – обновление веб-страницы сразу после того, как клиент отправил данные формы.
- Шаблон. Так называется «каркас» страницы на the Django. То, что увидит пользователь, когда откроет приложение или страницу.
Выше можно увидеть общую структуру работы программы, написанной на Джанго. Браузер и база данных располагаются за пределами фреймворка, а сервер и URL-маршрутизатор будут создаваться его средствами. Остальные элементы успешно функционируют внутри рассматриваемого инструмента.
Основные функциональные возможности
Джанго – верный помощник разработчика на Python и других языках. Он используется для разных целей и имеет множество интересных опций. В основном они ориентированы на уникальности веб-сервисов.
К возможностям, которые предоставляет упомянутый ранее пакет инструментов, можно отнести:
- Настроенный веб-сервер. Он будет принимать и обрабатывать пользовательские запросы, направленные на страницу.
- Готовые механизмы реализации авторизации клиентов в системе.
- Элементарные шаблоны веб-страниц. С их помощью можно подобрать «готовое решение» для простеньких начальных проектов.
- Административный интерфейс. За счет соответствующей функциональности будет обеспечиваться управление контентом сервиса: наполнение, корректировка, обновление.
- Кэширование. Данная особенность позволяет ускорить загрузку и отображение страницы через Интернет-обозреватели, внешние клиенты и браузеры.
- Интерфейсы, а также адаптеры подключения к информационным базам.
The Django удобно и легко использовать. Если изучить его базовые возможности, программисты смогут достаточно быстро создавать крупные и сложные проекты.
Базовая структура
Каждая программа и веб-страница индивидуальна, но все приложения имеют примерно одинаковую структуру. Среди базовых элементов контента, созданного через Джанго, можно выделить:
- URL-маршрутизаторы. Они отвечают за перенаправление HTTP-запроса от браузера или иного веб-клиента в представление.
- Представление. Здесь происходит обработка запроса с последующим обращением к модели.
- Модель – это менеджер базы данных, ORM. Элемент, отвечающий за «вытаскивание» необходимой информации из базы данных. После этого система передаст сведения клиенту.
- HTML-шаблоны. Они используются представлением для демонстрации выгруженных электронных материалов.
Точная структура исходного кода будет напрямую зависеть от конкретного проекта. Расширить стандартную функциональность Джанго удается за счет распространения по типу open source и внешних программных пакетов.
Преимущества и недостатки
Рассматриваемый проект предусматривает как сильные, так и слабые стороны. Зная о них, программисты смогут понять, стоит ли им устанавливать, обновлять и использовать the Django.
ПлюсыМинусыПростота освоения и использования. Создать элементарную страницу через Джанго может даже тот, у кого минимальные познания в области разработки.Небольшие ограничения. Рассматриваемый проект в некоторых областях имеет строгие настройки, которые не подлежат корректировке.Высокий уровень гибкости. Базовые возможности фреймворка допускают изменение и настройку под потребности каждого отдельно взятого проекта.Высокие требования к ресурсам. За счет мощности и функциональности, Джанго будет хорошо работать только на мощных устройствах. Код, написанный при помощи этого фреймворка, требует больше, чем нативный Python-код.Стандартизация. Если ранее пользователь имел дело с фреймворком, разобраться с его новыми версиями будет легко.Большая сложность для элементарных программ. Иногда разработчикам проще написать сайт «с нуля», чем пользоваться the Django objects.Высокий уровень безопасности. Во фреймворке имеются встроенные методы защиты, а также middleware. С их помощью удается добиться высокого уровня безопасности пользовательских данных, а также всего проекта.Средства для удобного администрирования.Известность и высокий уровень популярности. За счет данной особенности новички смогут обратиться с вопросом в сообщество и оперативно получить ответ.Поддержка различных видов баз данных. Теперь не придется пользоваться сложными настройками для того, чтобы интегрировать веб-программу или сайт с информационными базами.
The Django позволяет решать задачи несколькими способами. Данный прием благоприятно сказывается на разработке как крупных, так и небольших приложений.
Области применения
Джанго – инструмент программиста, который позволяет создавать проекты различной сложности. Обычно он встречается тогда, когда на выходе должен получиться сервис, умеющий обслуживать огромное количество пользователей.
The Django идеально подходит для работы с крупными базами данных. Его используют при разработке онлайн-магазинов, новостных сайтов, веб-приложений, социальных сетей и блогов.
Рассматриваемый инструмент разработчика используется мировыми IT-компаниями: Google и Yandex, а также другими организациями. С его помощью были созданы такие известные сервисы как Dropbox, Pinterest, Reddit.
Когда лучше воздержаться
Несмотря на общую функциональность и высокий уровень безопасности, некоторые настройки и objects в Джанго могут создать помехи при разработке программного обеспечения. Существуют ситуации, при которых рекомендуется воздержаться от использования рассматриваемого фреймворка. Сюда относят:
- Реализацию проектов, имеющих сложные и разветвленные структуры и богатую функциональность. The Django успешно используется при разработке отдельных частей программных продуктов.
- Простейшие проекты с минимальной функциональностью. Обычно такие программы не должны работать с базами данных.
- Реализации со специфичными архитектурами и функциональностью. Некоторые опции требуют от разработчика написания кода «с нуля».
- Отсутствие базовых навыков работы с the Python.
Все это значит, что рассматриваемый инструмент разработки не всегда используется обособленно. Иногда он служит функциональным дополнительным средством программирования отдельный частей веб-сервисов.
Начало работы с инструментом
Джанго – отличный инструмент разработки как для новичков, так и для более опытных специалистов. Он рекомендован для изучения всеми, кто планирует создавать веб-страницы и Интернет-сервисы. Далее будут представлены азы работы с инструментов и его objects. Отдельное внимание предстоит уделить обновлениям – как самого the Django, так и информации в исходном коде.
Установка
Первое, что необходимо сделать для использования фреймворка – это установить определенные элементы на устройство. Предварительная подготовка сводится к нескольким этапам:
- Установка компонентов, необходимых для работы с The Python: pip и virtualenv. Для этого будут использоваться команды: .
- Сформировать виртуальное окружение, в котором будет функционировать рассматриваемый фреймворк:.
- Активировать виртуальное окружение. Для этого используется команда: .
- Провести инициализацию the Django через pip: .
Также допустима инициализация определенной версии Джанго. Для этого требуется в общую команду добавить параметр == с номером версии.
Настройка проекта
Для создания проекта в Джанго, требуется предварительно задать директорию на жестком диске под него. Пример – C:\Django. Далее – перейти в каталог через командную строку и CMD.
Как только будет установлен фреймворк, в папке виртуальной среды появится отдельный скрипт. Он называется the Django-admin.py. В операционной системе разработчик увидит аналогичный исполняемый документ формата .exe. Он расположен в подкаталоге Windows под названием Scripts.
Скрипт Django-admin поддерживает сразу несколько команд для манипулирования проектом. Пример – для его создания применяется директива startproject. Далее работа с исходным проектом будет базироваться на следующем алгоритме:
- Происходит активация заранее установленной среды. Ей рекомендуется присвоить определенное имя. Этот прием сделает дальнейшую работу более комфортной.
- Через команду startproject будет запущен сам проект.
- В текущей папке после «активации» используемого проекта появится его подкаталог.
Теперь разработчик может подключать модули, базы данных и другие элементы, внедрять в систему различные команды и функциональность. Все это в конечном итоге будет преобразовано в исходное приложение.
Что входит в состав проекта
Стандартный проект имеет следующие objects в своем составе (с расширением .py):
- Manage. Отвечает за разнообразные команды. С помощью этого objects допускается запуск программы.
- __init__. Стандартный документ при работе с the Python. Он придает папке, в котором расположен, свойства модулей.
- Settings. Основные настройки будущего приложения.
- URLS. Здесь располагаются шаблоны URL-адресов. Используется для формирования системы маршрутизации.
- Wsgi. Включает в свой состав параметры конфигурации WSGI. Они будут использоваться системой при непосредственном развертывании проекта.
Для отправки проекта на выполнение, придется перейти в консоли к его папке, а затем воспользоваться командой python manage.py runserver. После этого в командной строке появится адрес, по которому размещается страница. Обычно – 127.0.0.1:8000. Если перейти по нему в браузере, откроется содержимое по умолчанию.
Это – функционирующий готовый проект со стандартным и базовым контентом. Дальнейшая работа заключается в грамотной замене содержимого.
Обновление программы
Немаловажный момент при работе с Джанго и его objects – это обновление. Данная операция встречается и относительно элементов кода/информации в приложении, и относительно самого фреймворка.
Первое, что должен помнить программист – это то, как «поставить» новую версию фреймворка на устройство. Подобная операция может иметь ряд преимуществ. К ним относят:
- наличие обновлений безопасности – со временем старые сборки the Django и его objects теряют защиту;
- исправление ошибок, обнаруженных ранее;
- добавление новых функций и улучшений.
Если своевременно обновлять the framework objects, update Django с каждым разом будет менее «болезненным». Подобный прием позволит поддержать кодовую базу и проекты в актуальном состоянии.
Далее будут рассмотрены важные для обновления аспекты, а также организация соответствующего процесса.
Обязательное чтение
The objects в Джанго обновляются при помощи специальных команд и методов. В случае с обновлением версии фреймворка операцию можно разделить на несколько важных этапов. Первый – обязательное чтение. Оно имеет особую роль при первом обновлении. Здесь можно найти официальную документацию.
После этого предстоит ознакомиться с изменениями, внесенными в конкретную версию:
Особое внимание рекомендуется уделить таким objects, как несовместимые изменения. Этот момент позволит понять, что нужно для успешной «переустановки» фреймворка.
Если the objects обновляются более чем на одну функциональную версию (пример – с 2.0 до 2.3), обычно используется «поэтапное» обновление. Изменения вносятся постепенно, для каждой функциональной версии. Такой же вариант подойдет для того, чтобы перейти с одного LTS objects на другой.
Зависимости
Кроме обновления программы обычно требуется «переустанавливать» другие objects, связанные с Джанго. Пример – зависимости.
Если версия рассматриваемого фреймворка выпущена недавно или некоторых из objects зависимостей не очень хорошо поддерживаются, они могут не работать. Это нормальное явление. Оно вызвано несовместимостью зависимостей версий.
Решение в соответствующей ситуации одно – набраться терпения и подождать, пока не выйдет очередное обновление для имеющихся зависимостей.
Предупреждения об износе
Перед обновлением рекомендуется устранить все предупреждения об устаревании, которые ранее были выданы программой в процессе использования фреймворка. Исправление таких objects перед обновлением гарантирует качественное информирование о кодовых фрагментах, нуждающихся в изменениях.
В Python предупреждения об износе по умолчанию отключены. Они требуют предварительной активации за счет командной строки или переменной окружения. Вот – пример, показывающий предупреждения при тестировании:
Если такие objects как «бегунки тестирования» не используются, разработчику может потребоваться проверка на отсутствие перехвата консольного вывода. Он тоже способен скрывать предупреждения об износе. Вот – пример с pytest objects:
Перед продолжением обновления нужно устранить все предупреждения об устаревании текущей его версии.
Сторонние программы могут пользоваться устаревшими API для поддержки нескольких the Django-версий. Это приводит к тому, что предупреждения об устаревании в пакетах не обязательно будут указывать на наличие реальной проблемы. Если пакет или иные objects не поддерживают последние версии the framework, рекомендуется поднять эту тему на рассмотрение или отправить запрос на исправление ситуации.
Непосредственная инициализация
После предварительной подготовки к updating, можно реализовать эту задачу. Если разработчик пользуется virtual environment, а также речь идет о достаточно крупной обновлении, сначала рекомендуется поставить на устройство новое окружение со всеми зависимостями.
Выше – команда, которая позволяет поставить на устройство новую версию изучаемого фреймворка. Она будет работать, если инициализация the Django была организована через pip. Данная операция требует использования флагов -U или —upgrade.
Тестирование
Следующий важный этап обновления – это тестирование. Оно организовывается после того, как разработчик установит на устройство новое окружение.
Рекомендуется активировать предупреждения об износе, чтобы они отображались в тестовом выводе. Соответствующий флаг может также использоваться при ручном тестировании:
После выполнения тестов необходимо исправить все обнаруженные ошибки. Это – отличный момент для того, чтобы воспользоваться новыми преимуществами и objects фреймворка и рефакторингом.
Развертка
Когда разработчик будет уверен в том, что приложение полностью совместимо с новой версией инструмента разработчика, можно развернуть тот или иной проект.
Здесь рекомендуется запомнить, что при использовании кэширования, предоставляемого the framework objects, необходимо заранее подумать об очистке кэша. Выполнять операцию требуется после обновления. В противном случае программист может столкнуться с рядом проблем. Пример – при кэшировании pickled objects. Явление связано с отсутствием гарантий совместимости новой версии программного обеспечения.
Запросы в проекте
Обновление the Django – базовая операция, которая должна быть изучена каждым разработчиком. Непосредственная работа в проекте базируется на оперировании objects, а также на внедрении разнообразных команд, методов и запросов.
В основе использования моделей и баз данных располагается QuerySet и его методы. Это – объект, в котором представлен набор запросов к базе данных. Его методы – objects, отвечающие за формирование соответствующих «команд».
Вот – самые важные и распространенные методы:
- Filter – используется для фильтрации набора информации. Возвращает выборку данных, соответствующей фильтру в виде objects QuerySet.
- Exclude – фильтрация данных с возвратом выборки, которая не соответствует фильтру.
- Order_by – сортировка информационного набора. Возврат данных осуществляется в виде objects QuerySet.
- Distinct. Команда, которая используется для возврата objects QuerySet исключительно с уникальными объектами.
- Values – возврат результата в виде словаря.
- Value_list – возврат данных в виде списка.
- None – пустой набор в виде objects EmptyQuerySet.
- Create – создание одного объекта заданной модели.
- Get – возврат одного объекта модели.
- Raw – выполнение переданного SQL-запроса в виде того или иного параметра.
- First – выводит первый objects набора.
- Last – вывод последнего объекта в наборе.
- Exists – используется для проверки «на пустоту». Если в наборе имеется один objects или более, результат возвращается как True. В остальных случаях – False.
- Contains – метод, который работает по аналогии с exists. Он используется для поиска конкретного компонента в информационном наборе.
- Delete – команда, которая позволяет удалить один объект к заданной модели.
Все это – лишь часть запросов, с которыми может работать упомянутый фреймворк. Для update Django object могут использоваться разнообразные команды.
Методы для обновления
В Джанго для обновления информации могут использоваться такие команды как:
- Update_or_create – используется для обновления одного объекта модели по указанным параметрам. Если он отсутствует, система задаст соответствующие objects.
- Bulk_update – обновление набора objects.
- Save – используется системой для сохранения одного объекта модели. Если ранее он отсутствовал, произойдет его добавление. В противном случае – обновление.
- Update – обновление одного объекта модели.
Выше можно увидеть наглядный пример обновления данных при помощи одного из предложенных методов. Аналогичным образом можно формировать запросы для других команд и операций в будущем приложении.
Лучше изучить Python, Django и основы программирования можно при помощи дистанционных компьютерных курсов. На них научат базовым и продвинутым навыкам разработки «с нуля» в срок до 12 месяцев. Приобретенные знания и навыки можно будет подтвердить электронным сертификатом установленного образца.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Django: описание, обновление, работа с данными OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="В разработке программного обеспечения программисты используют различные инструменты. Они делают исходный код более быстрым, читабельным и простым. Популярным средством программирования на разных языках являются фреймворки. Фреймворк – это готовый фрагмент кода. Он используется разработчиком специально для того, чтобы быстрее разрабатывать проекты со схожей функциональностью. Некоторые программисты называют фреймворки библиотеками. У каждого языка программирования имеются свои" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/django-opisanie-obnovlenie-rabota-s-dannymi/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#article","name":"Django: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 OTUS","headline":"Django: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/08\/oj-1080x720102-1.jpg","width":2245,"height":1587},"datePublished":"2023-08-09T19:05:48+00:00","dateModified":"2024-01-11T20:46:51+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, Django, Python"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#listItem","position":2,"name":"Django: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#webpage","url":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/","name":"Django: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 OTUS","description":"\u0412 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u041e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u043c, \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u2013 \u044d\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441\u043e \u0441\u0445\u043e\u0436\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0441\u0432\u043e\u0438","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/08\/oj-1080x720102-1.jpg","@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/#mainImage"},"datePublished":"2023-08-09T19:05:48+00:00","dateModified":"2024-01-11T20:46:51+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/7153" /><link rel='shortlink' href='https://otus.ru/journal/?p=7153' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdjango-opisanie-obnovlenie-rabota-s-dannymi%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdjango-opisanie-obnovlenie-rabota-s-dannymi%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-7153 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-7153" class="the-post post-7153 post type-post status-publish format-standard has-post-thumbnail category-polza tag-django tag-python">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Django: описание, обновление, работа с данными
</h1>
<a href="https://otus.ru/journal/django-opisanie-obnovlenie-rabota-s-dannymi/" class="date-link" data-wpel-link="internal"><time class="post-date">9 августа, 2023</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720102-1.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Django: описание, обновление, работа с данными" title="Django: описание, обновление, работа с данными" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720102-1-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720102-1-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720102-1-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5" title="Краткое описание">Краткое описание</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Принцип функционирования">Принцип функционирования</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8" title="Основные функциональные возможности">Основные функциональные возможности</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0" title="Базовая структура">Базовая структура</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8" title="Преимущества и недостатки">Преимущества и недостатки</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F" title="Области применения">Области применения</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%9A%D0%BE%D0%B3%D0%B4%D0%B0_%D0%BB%D1%83%D1%87%D1%88%D0%B5_%D0%B2%D0%BE%D0%B7%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%82%D1%8C%D1%81%D1%8F" title="Когда лучше воздержаться">Когда лучше воздержаться</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%BC" title="Начало работы с инструментом">Начало работы с инструментом</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0" title="Установка">Установка</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0" title="Настройка проекта">Настройка проекта</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%A7%D1%82%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82_%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0" title="Что входит в состав проекта">Что входит в состав проекта</a></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B" title="Обновление программы">Обновление программы</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5" title="Обязательное чтение">Обязательное чтение</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%97%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8" title="Зависимости">Зависимости</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%9F%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE%D0%B1_%D0%B8%D0%B7%D0%BD%D0%BE%D1%81%D0%B5" title="Предупреждения об износе">Предупреждения об износе</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%9D%D0%B5%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Непосредственная инициализация">Непосредственная инициализация</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-17" href="#%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Тестирование">Тестирование</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D0%BA%D0%B0" title="Развертка">Развертка</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5" title="Запросы в проекте">Запросы в проекте</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-20" href="#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F" title="Методы для обновления">Методы для обновления</a></li></ul></li></ul></nav></div>
<p>В разработке программного обеспечения программисты используют различные инструменты. Они делают исходный код более быстрым, читабельным и простым. Популярным средством программирования на разных языках являются фреймворки. </p>
<p>Фреймворк – это готовый фрагмент кода. Он используется разработчиком специально для того, чтобы быстрее разрабатывать проекты со схожей функциональностью. Некоторые программисты называют фреймворки библиотеками.</p>
<p>У каждого языка программирования имеются свои собственные the frameworks. Некоторые из них являются универсальными и поддерживают сразу несколько синтаксисов. Наглядным примером станет the Django.</p>
<p>Далее предстоит изучить не только этот фреймворк, но и его плюсы/минусы, области применения, основы реализации. Отдельное внимание будет уделено обновлению. Не только данных, но и самого фреймворка, потому что обозначенный процесс может вызывать даже у опытных специалистов некоторые трудности.</p>
<p>Информация, представленная далее, ориентирована в большей степени на тех, кто уже имел опыт в разработке программного обеспечения. Упор будет сделан на Python – основной язык программирования, работающий с Django.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5"></span>Краткое описание<span class="ez-toc-section-end"></span></h2>
<p>The Django – свободный и функциональный фреймворк с регулярными обновлениями и открытым исходным кодом. Используется в программировании преимущественно по время веб-разработки. The Django дает возможность быстро писать безопасные веб-программы, а также сайты и интернет-магазины. В процессе функционирования рассматриваемый инструмент использует шаблон проектирования под названием MVC.</p>
<p>У the Django поддерживается значительный ассортимент готовых модулей, настроек и инструментов для web программирования. С его помощью удается реализовать достаточно сложные операции за счет элементарных манипуляций.</p>
<p>Рассматриваемый проект полностью написан на the Python. В шаблонах он может использовать не только Питон, но и:</p>
<ul>
<li>CSS;</li>
<li>HTML;</li>
<li>JavaScript, включая его фреймворки.</li>
</ul>
<p>Осваивать Джанго рекомендуется тем, кто планирует заниматься программированием веб-страниц и программ.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></span>Принцип функционирования<span class="ez-toc-section-end"></span></h3>
<p>The framework – это «каркас», на который разработчик будет «крепить» необходимую ему функциональность. В случае с рассматриваемым инструментом ситуация не меняется. The Django – это основа, к которой программист будет присоединять дополнительные элементы:</p>
<ul>
<li>пользовательские интерфейсы;</li>
<li>сценарии работы компонентов исходного программного обеспечения;</li>
<li>библиотеки;</li>
<li>мультимедийные компоненты;</li>
<li>модули безопасности;</li>
<li>информационные базы.</li>
</ul>
<p>Соответствующий инструмент будет отвечать за базовые аспекты работы программы. Сменные (подключаемые) модули – за дополнительные, «специфичные» функции конкретного программного обеспечения.</p>
<p>Фреймворк работает по модели MTV («Модель–Представление–Шаблон»). Инструмент разделяет внутреннюю логику работы сайта, внешний вид страницы для пользователя, а также реакции сервиса на посылаемые запросы и различные воздействия:</p>
<ol>
<li>Модель – используется для обеспечения внутренней работы сайта. Сюда можно отнести подключение к базе данных, выбор формата хранения данных, иные опции.</li>
<li>Представление будет определять данные, необходимые для демонстрации пользователю. После этого система отправит информацию туда, где она отображается. Представление будет принимать запросы от пользователей и выдает характерную реакцию. Пример – обновление веб-страницы сразу после того, как клиент отправил данные формы.</li>
<li>Шаблон. Так называется «каркас» страницы на the Django. То, что увидит пользователь, когда откроет приложение или страницу.</li>
</ol>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/SZMQEMI1LLY52iVj22v9r_wrHCzGro7e1MrIdY8HEWph7Th0aKc05Pn01SxxKqJ9-ZKPu7Oj_te1WrX_YUIVQ4vN_TDgUA84Sl4l2mOh7_sjIO0ulVJVOqpo3HiUUf6m0ZOny-mcASnNFQPG1imJbw" alt="Django: описание, обновление, работа с данными"/></figure>
<p>Выше можно увидеть общую структуру работы программы, написанной на Джанго. Браузер и база данных располагаются за пределами фреймворка, а сервер и URL-маршрутизатор будут создаваться его средствами. Остальные элементы успешно функционируют внутри рассматриваемого инструмента.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8"></span>Основные функциональные возможности<span class="ez-toc-section-end"></span></h3>
<p>Джанго – верный помощник разработчика на Python и других языках. Он используется для разных целей и имеет множество интересных опций. В основном они ориентированы на уникальности веб-сервисов.</p>
<p>К возможностям, которые предоставляет упомянутый ранее пакет инструментов, можно отнести:</p>
<ol>
<li>Настроенный веб-сервер. Он будет принимать и обрабатывать пользовательские запросы, направленные на страницу.</li>
<li>Готовые механизмы реализации авторизации клиентов в системе.</li>
<li>Элементарные шаблоны веб-страниц. С их помощью можно подобрать «готовое решение» для простеньких начальных проектов.</li>
<li>Административный интерфейс. За счет соответствующей функциональности будет обеспечиваться управление контентом сервиса: наполнение, корректировка, обновление.</li>
<li>Кэширование. Данная особенность позволяет ускорить загрузку и отображение страницы через Интернет-обозреватели, внешние клиенты и браузеры.</li>
<li>Интерфейсы, а также адаптеры подключения к информационным базам.</li>
</ol>
<p>The Django удобно и легко использовать. Если изучить его базовые возможности, программисты смогут достаточно быстро создавать крупные и сложные проекты.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0"></span>Базовая структура<span class="ez-toc-section-end"></span></h3>
<p>Каждая программа и веб-страница индивидуальна, но все приложения имеют примерно одинаковую структуру. Среди базовых элементов контента, созданного через Джанго, можно выделить:</p>
<ol>
<li>URL-маршрутизаторы. Они отвечают за перенаправление HTTP-запроса от браузера или иного веб-клиента в представление.</li>
<li>Представление. Здесь происходит обработка запроса с последующим обращением к модели.</li>
<li>Модель – это менеджер базы данных, ORM. Элемент, отвечающий за «вытаскивание» необходимой информации из базы данных. После этого система передаст сведения клиенту.</li>
<li>HTML-шаблоны. Они используются представлением для демонстрации выгруженных электронных материалов.</li>
</ol>
<p>Точная структура исходного кода будет напрямую зависеть от конкретного проекта. Расширить стандартную функциональность Джанго удается за счет распространения по типу open source и внешних программных пакетов.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8"></span>Преимущества и недостатки<span class="ez-toc-section-end"></span></h2>
<p>Рассматриваемый проект предусматривает как сильные, так и слабые стороны. Зная о них, программисты смогут понять, стоит ли им устанавливать, обновлять и использовать the Django.</p>
<figure class="wp-block-table"><table><tbody><tr><td>Плюсы</td><td>Минусы</td></tr><tr><td>Простота освоения и использования. Создать элементарную страницу через Джанго может даже тот, у кого минимальные познания в области разработки.</td><td>Небольшие ограничения. Рассматриваемый проект в некоторых областях имеет строгие настройки, которые не подлежат корректировке.</td></tr><tr><td>Высокий уровень гибкости. Базовые возможности фреймворка допускают изменение и настройку под потребности каждого отдельно взятого проекта.</td><td>Высокие требования к ресурсам. За счет мощности и функциональности, Джанго будет хорошо работать только на мощных устройствах. Код, написанный при помощи этого фреймворка, требует больше, чем нативный Python-код.</td></tr><tr><td>Стандартизация. Если ранее пользователь имел дело с фреймворком, разобраться с его новыми версиями будет легко.</td><td>Большая сложность для элементарных программ. Иногда разработчикам проще написать сайт «с нуля», чем пользоваться the Django objects.</td></tr><tr><td>Высокий уровень безопасности. Во фреймворке имеются встроенные методы защиты, а также middleware. С их помощью удается добиться высокого уровня безопасности пользовательских данных, а также всего проекта.</td></tr><tr><td>Средства для удобного администрирования.</td></tr><tr><td>Известность и высокий уровень популярности. За счет данной особенности новички смогут обратиться с вопросом в сообщество и оперативно получить ответ.</td></tr><tr><td>Поддержка различных видов баз данных. Теперь не придется пользоваться сложными настройками для того, чтобы интегрировать веб-программу или сайт с информационными базами.</td></tr></tbody></table></figure>
<p>The Django позволяет решать задачи несколькими способами. Данный прием благоприятно сказывается на разработке как крупных, так и небольших приложений.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F"></span>Области применения<span class="ez-toc-section-end"></span></h2>
<p>Джанго – инструмент программиста, который позволяет создавать проекты различной сложности. Обычно он встречается тогда, когда на выходе должен получиться сервис, умеющий обслуживать огромное количество пользователей.</p>
<p>The Django идеально подходит для работы с крупными базами данных. Его используют при разработке онлайн-магазинов, новостных сайтов, веб-приложений, социальных сетей и блогов.</p>
<p>Рассматриваемый инструмент разработчика используется мировыми IT-компаниями: Google и Yandex, а также другими организациями. С его помощью были созданы такие известные сервисы как Dropbox, Pinterest, Reddit.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%B3%D0%B4%D0%B0_%D0%BB%D1%83%D1%87%D1%88%D0%B5_%D0%B2%D0%BE%D0%B7%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%82%D1%8C%D1%81%D1%8F"></span>Когда лучше воздержаться<span class="ez-toc-section-end"></span></h3>
<p>Несмотря на общую функциональность и высокий уровень безопасности, некоторые настройки и objects в Джанго могут создать помехи при разработке программного обеспечения. Существуют ситуации, при которых рекомендуется воздержаться от использования рассматриваемого фреймворка. Сюда относят:</p>
<ol>
<li>Реализацию проектов, имеющих сложные и разветвленные структуры и богатую функциональность. The Django успешно используется при разработке отдельных частей программных продуктов.</li>
<li>Простейшие проекты с минимальной функциональностью. Обычно такие программы не должны работать с базами данных.</li>
<li>Реализации со специфичными архитектурами и функциональностью. Некоторые опции требуют от разработчика написания кода «с нуля».</li>
<li>Отсутствие базовых навыков работы с the Python.</li>
</ol>
<p>Все это значит, что рассматриваемый инструмент разработки не всегда используется обособленно. Иногда он служит функциональным дополнительным средством программирования отдельный частей веб-сервисов.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%BC"></span>Начало работы с инструментом<span class="ez-toc-section-end"></span></h2>
<p>Джанго – отличный инструмент разработки как для новичков, так и для более опытных специалистов. Он рекомендован для изучения всеми, кто планирует создавать веб-страницы и Интернет-сервисы. Далее будут представлены азы работы с инструментов и его objects. Отдельное внимание предстоит уделить обновлениям – как самого the Django, так и информации в исходном коде.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0"></span>Установка<span class="ez-toc-section-end"></span></h3>
<p>Первое, что необходимо сделать для использования фреймворка – это установить определенные элементы на устройство. Предварительная подготовка сводится к нескольким этапам:</p>
<ol>
<li>Установка компонентов, необходимых для работы с The Python: pip и virtualenv. Для этого будут использоваться команды: <img alt="Django: описание, обновление, работа с данными" decoding="async" src="https://lh3.googleusercontent.com/JAd3J7TlqnxWweZnBhE88WEfTaalWFvJ-FKJebFvxWWB18a1UsO-T6GWMG1h_FVazzuWxsmdV3pRMGDKm7VYI7jcHFJE-L_HQpcDSt2YA-NHApv9BmBdwCe7qYiU3Z0FYrZAfeW9cQgWLlsyiPuJNw" width="623" height="69">.</li>
<li>Сформировать виртуальное окружение, в котором будет функционировать рассматриваемый фреймворк:<img alt="Django: описание, обновление, работа с данными" decoding="async" src="https://lh6.googleusercontent.com/AbTjjKdBax0qirOeoHNBwAQDI1QF5xrH7w-tmpKckDJsE4hrwkDFBUue60fELN94K_fcwoWo67vDhYQd3Ngy_je_FhDKzqcNmuSd3ZM2ax_b5Fg8mYOalcZwRXrafuHl-Ox9wshXdH-bI7epe4Y0Qw" width="428" height="40">.</li>
<li>Активировать виртуальное окружение. Для этого используется команда: <img alt="Django: описание, обновление, работа с данными" loading="lazy" decoding="async" src="https://lh5.googleusercontent.com/h6rHS455d-vHos3PHLUH4vsC-MDCfIqscR-ZdWbKBcryWGfU-2E4po72IgTi42k43vSFkaGf03S77mPoEiap83FYEFMnKYOBy8L7_W-2XfNuyv4MnNBvaWqpAOmFmtRyxlNGXyEiKdFq_mWJzVYsIg" width="465" height="43">.</li>
<li>Провести инициализацию the Django через pip: <img alt="Django: описание, обновление, работа с данными" loading="lazy" decoding="async" src="https://lh6.googleusercontent.com/r2re62nPw8XLYhWOTxqMEOTWlJGf5hZgySKnoJb_vksBRGVF492HW7zeGnAbRzBt3v99PczzUCvcqkf-77jC8Nhx35zo3dSGv3fDd1PkEcRSXeZ5XIhfd_Ino0Ggrzu9u9lvTVw6z-DjHvw-EFGoZg" width="277" height="41">.</li>
</ol>
<p>Также допустима инициализация определенной версии Джанго. Для этого требуется в общую команду добавить параметр == с номером версии.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0"></span>Настройка проекта<span class="ez-toc-section-end"></span></h3>
<p> Для создания проекта в Джанго, требуется предварительно задать директорию на жестком диске под него. Пример – C:\Django. Далее – перейти в каталог через командную строку и CMD. </p>
<p>Как только будет установлен фреймворк, в папке виртуальной среды появится отдельный скрипт. Он называется the Django-admin.py. В операционной системе разработчик увидит аналогичный исполняемый документ формата .exe. Он расположен в подкаталоге Windows под названием Scripts.</p>
<p>Скрипт Django-admin поддерживает сразу несколько команд для манипулирования проектом. Пример – для его создания применяется директива startproject. Далее работа с исходным проектом будет базироваться на следующем алгоритме:</p>
<ol>
<li>Происходит активация заранее установленной среды. Ей рекомендуется присвоить определенное имя. Этот прием сделает дальнейшую работу более комфортной.</li>
<li>Через команду startproject будет запущен сам проект.</li>
<li>В текущей папке после «активации» используемого проекта появится его подкаталог.</li>
</ol>
<p>Теперь разработчик может подключать модули, базы данных и другие элементы, внедрять в систему различные команды и функциональность. Все это в конечном итоге будет преобразовано в исходное приложение.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D1%82%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82_%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0"></span><em>Что входит в состав проекта</em><span class="ez-toc-section-end"></span></h4>
<p>Стандартный проект имеет следующие objects в своем составе (с расширением .py):</p>
<ol>
<li>Manage. Отвечает за разнообразные команды. С помощью этого objects допускается запуск программы.</li>
<li>__init__. Стандартный документ при работе с the Python. Он придает папке, в котором расположен, свойства модулей.</li>
<li>Settings. Основные настройки будущего приложения.</li>
<li>URLS. Здесь располагаются шаблоны URL-адресов. Используется для формирования системы маршрутизации.</li>
<li>Wsgi. Включает в свой состав параметры конфигурации WSGI. Они будут использоваться системой при непосредственном развертывании проекта.</li>
</ol>
<p>Для отправки проекта на выполнение, придется перейти в консоли к его папке, а затем воспользоваться командой python manage.py runserver. После этого в командной строке появится адрес, по которому размещается страница. Обычно – 127.0.0.1:8000. Если перейти по нему в браузере, откроется содержимое по умолчанию.</p>
<p>Это – функционирующий готовый проект со стандартным и базовым контентом. Дальнейшая работа заключается в грамотной замене содержимого.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B"></span>Обновление программы<span class="ez-toc-section-end"></span></h2>
<p>Немаловажный момент при работе с Джанго и его objects – это обновление. Данная операция встречается и относительно элементов кода/информации в приложении, и относительно самого фреймворка.</p>
<p>Первое, что должен помнить программист – это то, как «поставить» новую версию фреймворка на устройство. Подобная операция может иметь ряд преимуществ. К ним относят:</p>
<ul>
<li>наличие обновлений безопасности – со временем старые сборки the Django и его objects теряют защиту;</li>
<li>исправление ошибок, обнаруженных ранее;</li>
<li>добавление новых функций и улучшений.</li>
</ul>
<p>Если своевременно обновлять the framework objects, update Django с каждым разом будет менее «болезненным». Подобный прием позволит поддержать кодовую базу и проекты в актуальном состоянии.</p>
<p>Далее будут рассмотрены важные для обновления аспекты, а также организация соответствующего процесса.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5"></span>Обязательное чтение<span class="ez-toc-section-end"></span></h3>
<p>The objects в Джанго обновляются при помощи специальных команд и методов. В случае с обновлением версии фреймворка операцию можно разделить на несколько важных этапов. Первый – обязательное чтение. Оно имеет особую роль при первом обновлении. <a href="https://django.fun/ru/docs/django/4.1/internals/release-process/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Здесь<span class="wpel-icon wpel-image wpel-icon-6"></span></a> можно найти официальную документацию.</p>
<p>После этого предстоит ознакомиться с изменениями, внесенными в конкретную версию:</p>
<ul>
<li><a href="https://django.fun/ru/docs/django/4.1/releases/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">release notes<span class="wpel-icon wpel-image wpel-icon-6"></span></a> есть для каждого «финального» релиза the objects;</li>
<li>для соответствующих сборок рекомендуется тщательно изучить <a href="https://django.fun/ru/docs/django/4.1/internals/deprecation/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">deprecation timeline<span class="wpel-icon wpel-image wpel-icon-6"></span></a>.</li>
</ul>
<p>Особое внимание рекомендуется уделить таким objects, как несовместимые изменения. Этот момент позволит понять, что нужно для успешной «переустановки» фреймворка.</p>
<p>Если the objects обновляются более чем на одну функциональную версию (пример – с 2.0 до 2.3), обычно используется «поэтапное» обновление. Изменения вносятся постепенно, для каждой функциональной версии. Такой же вариант подойдет для того, чтобы перейти с одного LTS objects на другой.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8"></span>Зависимости<span class="ez-toc-section-end"></span></h3>
<p>Кроме обновления программы обычно требуется «переустанавливать» другие objects, связанные с Джанго. Пример – зависимости.</p>
<p>Если версия рассматриваемого фреймворка выпущена недавно или некоторых из objects зависимостей не очень хорошо поддерживаются, они могут не работать. Это нормальное явление. Оно вызвано несовместимостью зависимостей версий.</p>
<p>Решение в соответствующей ситуации одно – набраться терпения и подождать, пока не выйдет очередное обновление для имеющихся зависимостей.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE%D0%B1_%D0%B8%D0%B7%D0%BD%D0%BE%D1%81%D0%B5"></span>Предупреждения об износе<span class="ez-toc-section-end"></span></h3>
<p>Перед обновлением рекомендуется устранить все предупреждения об устаревании, которые ранее были выданы программой в процессе использования фреймворка. Исправление таких objects перед обновлением гарантирует качественное информирование о кодовых фрагментах, нуждающихся в изменениях.</p>
<p>В Python предупреждения об износе по умолчанию отключены. Они требуют предварительной активации за счет командной строки или переменной окружения. Вот – пример, показывающий предупреждения при тестировании:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/qNYfXTjB91J3L5rvf5XZ2pfJROuVvGLaWsY4elUlqQSqHqh1_N3tqLsYmynPsHFAMxEhjFCDBafbXcy27Y1Otbuo-fEloJ4j55TVpLKvnHKPwGBqhCBj1mQNgEfKBi4Z9zAhn1EWWEvLU0DkE4hNRQ" alt="Django: описание, обновление, работа с данными"/></figure>
<p>Если такие objects как «бегунки тестирования» не используются, разработчику может потребоваться проверка на отсутствие перехвата консольного вывода. Он тоже способен скрывать предупреждения об износе. Вот – пример с pytest objects:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/n_pLdWM_Ctf41TqT_jmCbEo9s6W5V7mH7iGwkkUu7b4nI8nyLoNArJ_VJo0ZP90a2OTKjNZUGPZC-UIpjhlboOvtfIApL5Fn8h2gxNWDbuTBqNS4iLUYIArzld2gGTCV7LCt7cLHC-lIZH4vHCeYpA" alt="Django: описание, обновление, работа с данными"/></figure>
<p>Перед продолжением обновления нужно устранить все предупреждения об устаревании текущей его версии.</p>
<p>Сторонние программы могут пользоваться устаревшими API для поддержки нескольких the Django-версий. Это приводит к тому, что предупреждения об устаревании в пакетах не обязательно будут указывать на наличие реальной проблемы. Если пакет или иные objects не поддерживают последние версии the framework, рекомендуется поднять эту тему на рассмотрение или отправить запрос на исправление ситуации.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B5%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F"></span>Непосредственная инициализация<span class="ez-toc-section-end"></span></h3>
<p>После предварительной подготовки к updating, можно реализовать эту задачу. Если разработчик пользуется virtual environment, а также речь идет о достаточно крупной обновлении, сначала рекомендуется поставить на устройство новое окружение со всеми зависимостями.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/RaRiGfYGxX8ptna1zqUwU5ksOO-PvI0XxEJWbQNUxDEInjs7wfsL-WaxEt8nMI0aL1ucshHkMGL_cGxAlavDjAOYRT_QVN_SNiPP1FeUWniL97eB4l1FnO4UOQnT0sMimVi1-S4-uYgTcHT7cT0vbQ" alt="Django: описание, обновление, работа с данными"/></figure>
<p>Выше – команда, которая позволяет поставить на устройство новую версию изучаемого фреймворка. Она будет работать, если инициализация the Django была организована через pip. Данная операция требует использования флагов -U или —upgrade.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5"></span>Тестирование<span class="ez-toc-section-end"></span></h3>
<p>Следующий важный этап обновления – это тестирование. Оно организовывается после того, как разработчик установит на устройство новое окружение.</p>
<p>Рекомендуется активировать предупреждения об износе, чтобы они отображались в тестовом выводе. Соответствующий флаг может также использоваться при ручном тестировании:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/ITXmuu83pmK8w-aQcAXhrGyX-W_NTnTP0syZCMrNGK9u4P3M9_BD6Hs-jAjx2pQDbneLX6XhsiL9AActVrDj4ZWDIM_IB0PoIgVdjxqESxLRkbX9Ie-aE2r_ajyH8NysrcV7j_K27D9nVZpXypn-_w" alt="Django: описание, обновление, работа с данными"/></figure>
<p>После выполнения тестов необходимо исправить все обнаруженные ошибки. Это – отличный момент для того, чтобы воспользоваться новыми преимуществами и objects фреймворка и рефакторингом.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D0%BA%D0%B0"></span>Развертка<span class="ez-toc-section-end"></span></h3>
<p>Когда разработчик будет уверен в том, что приложение полностью совместимо с новой версией инструмента разработчика, можно развернуть тот или иной проект. </p>
<p>Здесь рекомендуется запомнить, что при использовании кэширования, предоставляемого the framework objects, необходимо заранее подумать об очистке кэша. Выполнять операцию требуется после обновления. В противном случае программист может столкнуться с рядом проблем. Пример – при кэшировании pickled objects. Явление связано с отсутствием гарантий совместимости новой версии программного обеспечения.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5"></span>Запросы в проекте<span class="ez-toc-section-end"></span></h2>
<p>Обновление the Django – базовая операция, которая должна быть изучена каждым разработчиком. Непосредственная работа в проекте базируется на оперировании objects, а также на внедрении разнообразных команд, методов и запросов.</p>
<p>В основе использования моделей и баз данных располагается QuerySet и его методы. Это – объект, в котором представлен набор запросов к базе данных. Его методы – objects, отвечающие за формирование соответствующих «команд».</p>
<p>Вот – самые важные и распространенные методы:</p>
<ol>
<li>Filter – используется для фильтрации набора информации. Возвращает выборку данных, соответствующей фильтру в виде objects QuerySet.</li>
<li>Exclude – фильтрация данных с возвратом выборки, которая не соответствует фильтру.</li>
<li>Order_by – сортировка информационного набора. Возврат данных осуществляется в виде objects QuerySet.</li>
<li>Distinct. Команда, которая используется для возврата objects QuerySet исключительно с уникальными объектами.</li>
<li>Values – возврат результата в виде словаря.</li>
<li>Value_list – возврат данных в виде списка.</li>
<li>None – пустой набор в виде objects EmptyQuerySet.</li>
<li>Create – создание одного объекта заданной модели.</li>
<li>Get – возврат одного объекта модели.</li>
<li>Raw – выполнение переданного SQL-запроса в виде того или иного параметра.</li>
<li>First – выводит первый objects набора.</li>
<li>Last – вывод последнего объекта в наборе.</li>
<li>Exists – используется для проверки «на пустоту». Если в наборе имеется один objects или более, результат возвращается как True. В остальных случаях – False.</li>
<li>Contains – метод, который работает по аналогии с exists. Он используется для поиска конкретного компонента в информационном наборе.</li>
<li>Delete – команда, которая позволяет удалить один объект к заданной модели.</li>
</ol>
<p>Все это – лишь часть запросов, с которыми может работать упомянутый фреймворк. Для update Django object могут использоваться разнообразные команды.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F"></span>Методы для обновления<span class="ez-toc-section-end"></span></h3>
<p>В Джанго для обновления информации могут использоваться такие команды как:</p>
<ol>
<li>Update_or_create – используется для обновления одного объекта модели по указанным параметрам. Если он отсутствует, система задаст соответствующие objects.</li>
<li>Bulk_update – обновление набора objects.</li>
<li>Save – используется системой для сохранения одного объекта модели. Если ранее он отсутствовал, произойдет его добавление. В противном случае – обновление.</li>
<li>Update – обновление одного объекта модели.</li>
</ol>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/Kv1cWvytlRjeyBr_NXo9hcahYaFK-nFXFSP3RjLScGabvJ6420BzcAA6c5wMY5mblM6SlBjwyAIVKpxJbb9d3GpOuypygml34i8-6sD8mS1_OfXxw_NqO7I5xSs16wCDB6mg7Ji1ESHjv_JIAVA79A" alt="Django: описание, обновление, работа с данными"/></figure>
<p>Выше можно увидеть наглядный пример обновления данных при помощи одного из предложенных методов. Аналогичным образом можно формировать запросы для других команд и операций в будущем приложении.</p>
<p><a href="https://otus.ru/lessons/python-professional/?utm_source=oj&utm_medium=affilate&utm_campaign=python" title="" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Лучше изучить Python, Django и основы программирования можно при помощи дистанционных компьютерных курсов<span class="wpel-icon wpel-image wpel-icon-6"></span></a>. На них научат базовым и продвинутым навыкам разработки «с нуля» в срок до 12 месяцев. Приобретенные знания и навыки можно будет подтвердить электронным сертификатом установленного образца.</p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/django/" rel="tag" data-wpel-link="internal">Django</a><a href="https://otus.ru/journal/tag/python/" rel="tag" data-wpel-link="internal">Python</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fdjango-opisanie-obnovlenie-rabota-s-dannymi%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdjango-opisanie-obnovlenie-rabota-s-dannymi%2F&text=Django%3A%20%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5%2C%20%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%2C%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%20%D1%81%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdjango-opisanie-obnovlenie-rabota-s-dannymi%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdjango-opisanie-obnovlenie-rabota-s-dannymi%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2023%2F08%2Foj-1080x720102-1.jpg&description=Django%3A%20%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5%2C%20%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%2C%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%20%D1%81%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/rabota-so-strokami-v-python-2/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/rabota-so-strokami-v-python-2/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Работа со строками в Python" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720101-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720101-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720101-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720101-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720101-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720101-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Работа со строками в Python" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/rabota-so-strokami-v-python-2/" data-wpel-link="internal">Работа со строками в Python</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/rabota-so-strokami-v-python-2/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-08-09T18:47:34+00:00">9 августа, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">8 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/javascript-i-uslovnye-operatory/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/javascript-i-uslovnye-operatory/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="JavaScript и условные операторы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720104-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720104-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720104-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720104-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720104-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/08/oj-1080x720104-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="JavaScript и условные операторы" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/javascript-i-uslovnye-operatory/" data-wpel-link="internal">JavaScript и условные операторы</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/javascript-i-uslovnye-operatory/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-08-09T19:17:31+00:00">9 августа, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">6 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"0"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"0","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/django-opisanie-obnovlenie-rabota-s-dannymi\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 16:34:55 GMT -->