Чем django отличается от django rest framework

Обновлено: 28.06.2024

Давайте посмотрим, как создать RESTFul API для нашего проекта Django Talk с помощью Django Rest Framework (DRF) — приложения, используемого для быстрого создания RESTful API на основе моделей Django.

Иными словами, мы будем преобразовывать не-RESTful-приложение в RESTful-приложение с DRF. Для этого приложения мы будем использовать DRF версии 2.4.2.

Это руководство охватывает следующие темы:

  1. Настройка DRF
  2. Структура REST
  3. Сериализатор модели
  4. API DRF для просмотра в Интернете

Бесплатный бонус: нажмите здесь, чтобы загрузить копию руководства «Примеры REST API» и получить практическое введение в принципы Python + REST API с практическими примерами.

Если вы пропустили первую и вторую части этой серии руководств, обязательно ознакомьтесь с ними. Нужен код? Загрузите его из репозитория. Чтобы получить более подробное руководство по Django Rest Framework, ознакомьтесь с третьим курсом Real Python.

Настройка DRF

Структура REST

< tr> td>
GET POST PUT DELETE
/posts/ Показать все сообщения Добавить новое сообщение Обновить все сообщения Удалить все сообщения
/posts/ Показать Н/Д Обновить Удалить идентификатор

Быстрый старт DRF

Давайте запустим наш новый API!

Сериализатор модели

Сериализаторы DRF преобразуют экземпляры моделей в словари Python, которые затем могут отображаться в различных форматах, подходящих для API, таких как JSON или XML. Подобно классу Django ModelForm, DRF поставляется с кратким форматом для своих сериализаторов — классом ModelSerializer. Он прост в использовании: просто укажите, какие поля из модели вы хотите использовать:

Сохраните это как serializers.py в папке «talk».

Обновить представления

Нам нужно реорганизовать наши текущие представления, чтобы они соответствовали парадигме RESTful. Закомментируйте текущие представления и добавьте:

Обязательно прочтите дополнительную информацию о @api_view в официальной документации.

Обновить URL

Давайте подключим несколько новых URL:

Теперь мы готовы к нашему первому тесту!

Итак, без дополнительной работы с нашей стороны мы автоматически получаем этот приятный, удобочитаемый вывод нашего API. Хороший! Это огромная победа DRF.

Прежде чем двигаться дальше, вы, возможно, заметили, что поле автора представляет собой идентификатор, а не фактическое имя пользователя. Мы рассмотрим это в ближайшее время. А пока давайте подключим наш новый API, чтобы он работал с шаблонами нашего текущего приложения.

Рефакторинг REST

При начальной загрузке страницы мы хотим отобразить все сообщения. Для этого добавьте следующий запрос AJAX:

Все это вы уже видели. Обратите внимание, как мы обрабатываем успех: поскольку API отправляет обратно несколько объектов, нам нужно перебирать их, добавляя каждый в DOM. Мы также изменили json[i].postpk на json[i].id при сериализации идентификатора сообщения .

Проверьте это. Запустите сервер, войдите в систему и проверьте сообщения.

Помимо автора, отображаемого в виде идентификатора, обратите внимание на формат даты и времени. Это не то, чего мы хотим, верно? Нам нужен удобочитаемый формат даты и времени. Давайте обновим это…

Формат даты и времени

Мы можем использовать замечательную библиотеку JavaScript под названием MomentJS, чтобы легко форматировать дату так, как мы хотим.

Во-первых, нам нужно импортировать библиотеку в наш файл index.html:

Затем обновите цикл for в main.js:

Здесь мы передаем строку даты в новую функцию convert_to_readable_date() , которую необходимо добавить:

Вот и все. Обновите браузер. Формат даты и времени теперь должен выглядеть примерно так — 22.08.2014, 18:48:29. Обязательно ознакомьтесь с документацией MomentJS, чтобы получить дополнительную информацию об анализе и форматировании строки даты и времени в JavaScript.

Запросы POST обрабатываются аналогичным образом. Прежде чем возиться с сериализатором, давайте сначала протестируем его, просто обновив представления. Может быть, нам повезет, и это сработает.

Обновите функцию post_collection() в views.py:

Также добавьте следующий импорт:

Обновите конечную точку в функции create_post()

Протестируйте его в браузере. Он должен работать. Не забудьте правильно обновить обработку дат, а также изменить json.postpk на json.id :

Формат автора

Сейчас самое время сделать паузу и решить проблему с идентификатором автора и именем пользователя. У нас есть несколько вариантов:

  1. Будьте действительно СПОКОЙНЫ и сделайте еще один звонок, чтобы получить информацию о пользователе, что не очень хорошо для производительности.
  2. Используйте отношение SlugRelatedField.

Давайте выберем последний вариант. Обновите сериализатор:

Что здесь происходит?

  1. SlugRelatedField позволяет нам изменить цель поля автора с идентификатора на имя пользователя.
  2. Кроме того, по умолчанию целевое поле — имя пользователя — доступно как для чтения, так и для записи, поэтому стандартное отношение будет работать как для запросов GET, так и для запросов POST.

Также обновите переменную данных в представлениях:

Проверьте еще раз. Теперь вы должны увидеть имя пользователя автора. Убедитесь, что запросы GET и POST работают правильно.

Удалить

Прежде чем что-то изменить или добавить, проверьте это. Попробуйте удалить ссылку. Что просходит? Вы должны получить ошибку 404. Любая идея, почему это было бы? Или куда обратиться, чтобы узнать, в чем дело? Как насчет функции delete_post в нашем файле JavaScript:

Такого URL не существует. Прежде чем мы его обновим, спросите себя: «Должны ли мы ориентироваться на коллекцию или на отдельный элемент?». Если вы не уверены, прокрутите страницу назад и просмотрите таблицу RESTful Structure. Если мы не хотим удалять все сообщения, нам нужно нажать на конечную точку элемента:

Проверьте еще раз. Что теперь происходит? Вы должны увидеть ошибку 405 — 405: — поскольку представление не настроено для обработки запроса DELETE.

Заключение и следующие шаги

Бесплатный бонус: нажмите здесь, чтобы загрузить копию руководства «Примеры REST API» и получить практическое введение в принципы Python + REST API с практическими примерами.

На этом пока все. Нужен дополнительный вызов? Добавьте возможность обновлять записи с помощью запроса PUT.

Фактическая часть REST проста: вам просто нужно обновить функцию post_element() для обработки запросов PUT.

Клиентская сторона немного сложнее, так как вам нужно обновить фактический HTML, чтобы отобразить поле ввода, в котором пользователь может ввести новое значение, которое вам нужно будет получить в файле JavaScript, чтобы вы могли его отправить. с запросом PUT.

Собираетесь ли вы разрешить любому пользователю обновлять любое сообщение, независимо от того, опубликовал ли он его изначально?

Если да, то собираетесь ли вы обновить имя автора? Может быть, добавить поле edited_by в базу данных? Затем также отобразите отредактированную заметку в DOM. Если пользователи могут обновлять только свои собственные сообщения, вам нужно убедиться, что вы правильно обрабатываете это в представлениях, а затем отображаете сообщение об ошибке, если пользователь пытается отредактировать сообщение, которое он/она изначально не публиковал.

Или, возможно, вы могли бы просто удалить ссылку редактирования (и, возможно, также ссылку удаления) для сообщений, которые определенный пользователь не может редактировать. Вы можете превратить это в проблему с разрешениями и позволить только определенным пользователям, например модераторам или администраторам, редактировать все сообщения, в то время как остальные пользователи могут обновлять только свои собственные сообщения.

Так много вопросов.

В любом случае, в следующий раз вы увидите, как мы разбираем текущий код JavaScript по мере добавления в Angular! Тогда увидимся.

Раз в несколько дней получайте короткие и интересные трюки с Python. Никакого спама никогда. Отписаться в любое время. Куратор: команда Real Python.

Python Tricks Dictionary Merge

Олдрен Сантос

Освойте навыки работы с Python в реальном мире с неограниченным доступом к реальному Python

Присоединяйтесь к нам и получите доступ к сотням руководств, практических видеокурсов и сообществу опытных питонистов:

Освойте навыки работы с Python в реальном мире
с неограниченным доступом к реальному Python

Присоединяйтесь к нам и получите доступ к сотням руководств, практических видеокурсов и сообществу опытных питонистов:

Что вы думаете?

Настоящая политика комментариев Python: самые полезные комментарии — это те, которые написаны с целью обучения или помощи другим читателям — после прочтения всей статьи и всех предыдущих комментариев. Жалобы и оскорбления, как правило, здесь неуместны.

DRF предоставляет множество удобств, таких как модули аутентификации, сериализаторы/десериализаторы json, маршрутизация API и документация и т. д. и т. д. Django REST Framework — это фантастическое многофункциональное расширение для платформы Django. Хотя для создания RESTful API можно использовать только Django.

Кроме того, является ли Django REST API?

Среда Django REST — это мощный и гибкий набор инструментов для создания веб-API. Некоторые причины, по которым вы можете захотеть использовать инфраструктуру REST: Доступный для просмотра в Интернете API — это огромный выигрыш в удобстве использования для ваших разработчиков. Политики аутентификации, включая пакеты для OAuth1a и OAuth2.

кто использует фреймворк Django REST? Сообщается, что 247 компаний используют фреймворк Django REST в своих технологических стеках, включая Robinhood, Uploadcare и Festicket. 592 разработчика на StackShare заявили, что используют Django REST framework.

Также знаете, требуется ли Django rest framework?

Вам НЕ НУЖНО использовать инфраструктуру Django REST для создания API. Но если вы собираетесь создать достойный REST API в Django, DRF – это инфраструктура поверх Django, которая поможет вам создать API со следующими функциями: Возможность просмотра в Интернете. API, автогенерация документации. Автоматическое построение общих представлений из моделей.

Нужен ли мне Джанго?

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

На каких веб-сайтах используется Django?

Давайте подробнее рассмотрим лучшие сайты Django. Disqus. Вероятно, это самый популярный в мире хостинг комментариев для блогов. Битбакет. Мы живем в эпоху услуг хостинга кода. Инстаграм. Мозилла Фаерфокс. Пинтерест. НАСА. Лук. Махало.

Какая платформа лучше всего подходит для REST API?

Я выбрал Python как лучший язык, а точнее, Django — лучший инструмент для разработки REST API. Сам по себе Django — замечательная платформа для разработки веб-приложений, но причина, по которой я выбрал ее для этого ответа (помимо опыта работы с ней), — это Django Rest Framework (DRF).

Когда следует использовать RESTful API?

Вы должны использовать REST, потому что он действительно охватывает все возможные действия, которые вы хотите выполнить с ресурсом/объектом. GET — получить ресурс на основе заданных условий. POST - создать ресурс. PUT — обновить ресурс с заданными обновленными атрибутами. УДАЛИТЬ - удалить ресурс.

Что такое REST API в Python Django?

Акроним REST расшифровывается как Representational State Transfer, что означает архитектурный проект. Теперь, если вы хотите предоставить REST API, лучшим вариантом будет Django REST Framework. Это упрощает предоставление частей вашего приложения в виде REST API.

Что такое REST API framework?

Почему используется фреймворк Django REST?

REST API с Django Rest Framework. DRF или Django REST Framework — это мощный и гибкий инструментарий для создания веб-API. Это помогает разработчикам не изобретать велосипед, самостоятельно развертывая сложный и надежный REST API с нуля.

Как использовать REST API?

Используйте один метод REST API. На вкладке «Логика» откройте папку «Интеграции». Щелкните правой кнопкой мыши элемент REST и выберите Использовать REST API. В появившемся диалоговом окне выберите «Добавить один метод».

Почему мы используем сериализаторы в Django?

Сериализаторы позволяют преобразовывать сложные данные, такие как наборы запросов и экземпляры моделей, в собственные типы данных Python, которые затем можно легко преобразовать в JSON, XML или другие типы контента.

Для чего используется Django?

Использование Django – Введение. Django — это веб-фреймворк Python с открытым исходным кодом, используемый для быстрой разработки, прагматичного, удобного в сопровождении, чистого дизайна и защиты веб-сайтов. Платформа веб-приложений – это набор инструментов, в который входят все компоненты, необходимые для разработки приложений.

Что такое доступный для просмотра API?

"Просматриваемый" API — это API, добавляющий соответствия, которые позволяют вам понять, как его использовать, без значительной документации. В качестве простейшего примера некоторые люди используют HTML, а не JSON в качестве формата своего API. Затем вы можете использовать веб-браузер в дополнение к вашему обычному клиенту API.

Что такое сериализатор в среде Django REST?

Что такое сериализатор Django?

Сериализация объектов Django. Платформа сериализации Django предоставляет механизм для «перевода» моделей Django в другие форматы. Обычно эти другие форматы будут текстовыми и используются для отправки данных Django по сети, но сериализатор может обрабатывать любой формат (текстовый или нет).

Что такое REST API в Python?

Среда Django REST — это мощный и гибкий набор инструментов для создания веб-API.

Некоторые причины, по которым вам может понадобиться REST framework:

  • API с возможностью просмотра веб-страниц — это огромное преимущество для ваших разработчиков. включая пакеты для OAuth1a и OAuth2. который поддерживает как ORM, так и другие источники данных.
  • Можно полностью настроить — просто используйте обычные представления на основе функций, если вам не нужны более мощные функции.
  • Обширная документация и отличная поддержка сообщества.
  • Используется и пользуется доверием всемирно признанных компаний, включая Mozilla, Red Hat, Heroku и Eventbrite.

Финансирование

REST framework — это совместно финансируемый проект. Если вы используете платформу REST в коммерческих целях, мы настоятельно рекомендуем вам инвестировать в ее дальнейшее развитие, подписавшись на платный план.

Каждая регистрация помогает нам сделать платформу REST финансово устойчивой в долгосрочной перспективе.

Требования

Среда REST требует следующего:

  • Python (3.6, 3.7, 3.8, 3.9, 3.10)
  • Джанго (2.2, 3.0, 3.1, 3.2, 4.0)

Мы настоятельно рекомендуем и официально поддерживаем только последние выпуски исправлений для каждой серии Python и Django.

Следующие пакеты являются необязательными:

    , uritemplate (5.1+, 3.0.0+) — поддержка генерации схемы. (3.0.0+) — поддержка Markdown для API с возможностью просмотра. (2.4.0+) — Добавлена ​​подсветка синтаксиса для обработки Markdown. (1.0.1+) - Поддержка фильтрации. (1.1.1+) — Поддержка разрешений на уровне объектов.

Установка

Установите с помощью pip , включая любые дополнительные пакеты, которые вы хотите.

<р>. или клонируйте проект с github.

Добавьте "rest_framework" в настройку INSTALLED_APPS.

Если вы собираетесь использовать доступный для просмотра API, вы, вероятно, также захотите добавить представления входа и выхода REST framework. Добавьте следующее в корневой файл urls.py.

Обратите внимание, что путь URL может быть любым.

Пример

Давайте рассмотрим краткий пример использования среды REST для создания простого API на основе модели.

Мы создадим API для чтения и записи для доступа к информации о пользователях нашего проекта.

Все глобальные настройки для REST framework API хранятся в едином словаре конфигурации с именем REST_FRAMEWORK . Начните с добавления следующего в ваш модуль settings.py:

Не забудьте убедиться, что вы также добавили rest_framework в INSTALLED_APPS.

Теперь мы готовы создать наш API. Вот корневой модуль urls.py нашего проекта:

Быстрый старт

Не терпится начать? Краткое руководство — это самый быстрый способ приступить к работе и создать API с помощью платформы REST.

Разработка

Информацию о том, как клонировать репозиторий, запустить набор тестов и внести изменения обратно в REST Framework, см. в руководстве по внесению вклада.

Поддержка

Чтобы получить приоритетную поддержку, подпишитесь на профессиональный или премиальный спонсорский план.

Безопасность

Вопросы безопасности решаются под наблюдением команды безопасности Django.

Затем специалисты по сопровождению проекта будут работать с вами, чтобы решить любые проблемы, если это необходимо, до того, как они будут обнародованы.

Лицензия

Авторское право © Encode OSS Ltd., 2011 – настоящее время. Все права защищены.

Распространение и использование в исходном и бинарном виде, с изменениями или без них, разрешены при соблюдении следующих условий:

При повторном распространении исходного кода необходимо сохранить приведенное выше уведомление об авторских правах, этот список условий и следующий отказ от ответственности.

Вторичное распространение в двоичной форме должно воспроизводить указанное выше уведомление об авторских правах, этот список условий и следующий отказ от ответственности в документации и/или других материалах, поставляемых с дистрибутивом.

Ни имя владельца авторских прав, ни имена его участников не могут использоваться для поддержки или продвижения продуктов, созданных на основе этого программного обеспечения, без специального предварительного письменного разрешения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ОБЛАДАТЕЛЯМИ АВТОРСКИХ ПРАВ И УЧАСТНИКАМИ «КАК ЕСТЬ», И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ОБЛАДАТЕЛИ АВТОРСКИМ ПРАВОМ ИЛИ УЧАСТНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СЛУЧАЙНЫЙ, ОСОБЫЙ, ПРИМЕРНЫЙ ИЛИ ПОСЛЕДУЮЩИЙ УЩЕРБ (ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРИОБРЕТЕНИЕ ЗАМЕНЯЮЩИХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРЫВАНИЕ ДЕЛОВОЙ ДЕЯТЕЛЬНОСТИ), ОДНАКО ВЫЗВАННАЯ И НА ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО ПО ДОГОВОРУ, СТРОГОЙ ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛИКТАМ (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ИНЫМ ОБРАЗОМ), ВОЗНИКАЮЩИМ ЛЮБЫМ ПУТЕМ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ УВЕДОМЛЕНО О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

Если вы думаете, что Django творит чудеса, потому что вы можете сделать так много всего несколькими строками, подождите, пока вы не узнаете, что такое Django Rest Framework.

Что такое API?

Django Rest Framework позволяет создавать RESTful API: простой способ передачи информации между интерфейсом и базой данных.

Он разделяет пользовательский интерфейс и хранилище данных и связывает пользователя и базу данных, отправляя файл .json. Как и этот:

Представление Django Rest Framework

Встроенный визуальный интерфейс DRF

Вспомните, когда вы в последний раз совершали покупки в Интернете: помните ли вы, что каждая статья имела одинаковую структуру, но содержала разную информацию?

Они создали структуру с помощью HTML и CSS, а затем использовали API для заполнения каждой статьи.

Зачем использовать API?


Вы не сможете понять, что такое API, если не поймете, что он может делать.

Представьте, что вы хотите создать веб-приложение. Очевидно, вы бы выбрали Django.

Вы создаете его, и он становится хитом! Всем нравится ваше веб-приложение!

Они так любят его, что хотят версию для мобильных телефонов!

Пришло время создать версию для Android! И версия для iOS.

Затем вам придется дважды реплицировать один и тот же код для добавления, просмотра, удаления, обновления и удаления данных на разных языках.

Это открывает двери для многих возможных ошибок…

Но, несмотря на это, предположим, что вы управляли и создали одно и то же приложение, используя 3 разных языка.

Теперь вы заметили, что ваш сайт статичен. Вы хотите, чтобы ваше веб-приложение было более динамичным и современным. Для этого вам нужен Javascript.

Хотя вы можете сделать это только с помощью Vanilla Javascript, лучше использовать среду JS, такую ​​как React или Vue.

Теперь вам снова нужно повторить то, что вы делали в Django, iOS и Android.

Или вы можете создать REST API.

С помощью DRF вы можете создать API для передачи информации в пользовательский интерфейс.

Вы можете создать FrontEnd с Vue, приложением для Android и iOS, и все три разные платформы подключены к одному и тому же API

Структура API REST

Вам нужно создать логику только один раз, и все ваши платформы будут подключаться к одному и тому же API.

Таким образом, если вы хотите обновить его или добавить дополнительные функции, вам нужно изменить только одну сторону, а не каждую платформу.

Так проще, правда? Проще, масштабируемее и надежнее.

DRF берет на себя тяжелое взаимодействие с базой данных и логику, чтобы просто предоставить вам информацию. Независимо от того, сколько платформ вы используете или на каком языке они созданы. Вот так просто.

Почему Django Rest Framework?

Django rest framework logo

Теперь мы знаем, что REST API важны, потому что они позволяют нам легко взаимодействовать с базой данных, и мы можем использовать ее на разных платформах.

Но зачем использовать Django Rest Framework, а не Node.js, Golang, Rust и т. д.?

Ну, для начала, DRF использует Python, простой для изучения язык.

DRF, как и Django, делает все проще и проще. Знаете ли вы представления Django? Они есть и в DRF!

Вот и все. Вы создаете класс с именем UserList, который наследует методы от ListCreateAPIView.

Как следует из названия, вы можете перечислять и создавать пользователей. Если вы запросите URL-адрес (GET), вы получите список пользователей, если вы отправите (POST) информацию на этот URL-адрес, будет создан новый пользователь.

3 строки кода. Это все, что вам нужно.

Еще одна замечательная особенность DRF? Его документация. Наряду со Scrapy у него лучшая документация по Django Framework, которую я когда-либо видел.

Есть и более технические моменты, например, как обрабатываются миграции, как у каждого объекта есть модель, насколько легко переключать базы данных и многое другое.

Будьте уверены, вы не ошибетесь, выбрав Django Rest Framework.

Как изучить Django Rest Framework


Хорошо Дэвид , я согласен. Я хочу изучить Django Rest Framework прямо сейчас, чтобы легко взаимодействовать с моей базой данных. Как я могу изучить DRF?

Хороший вопрос! Помимо простоты использования, у вас есть много бесплатных ресурсов для изучения:

    . Все, что вам нужно для начала, и даже больше. Помните вводные опросы Django? Теперь версия DRF через Agiliq. Бесплатная онлайн-книга о Django и DRF. Опять же, благодаря Agiliq. Видео версия. Видеоверсия
  • Удобная для начинающих версия официального руководства по Django REST Framework, статья Уильяма Висента, статья на Medium

Заключение

Подытожим все, что мы сегодня узнали о Rest API и Django Framework:

  • REST API позволяют нам обмениваться информацией между интерфейсом и базой данных.
  • Мы можем использовать один REST API для поддержки любой платформы, которую захотим. Это устраняет дублирование кода и облегчает его эскалацию.
  • DRF использует Python, язык, который легко освоить.
  • Благодаря использованию Python и структуре DRF нам нужно всего несколько строк, чтобы что-то сделать.
  • Документация отличная
  • В Интернете есть множество бесплатных ресурсов
  • Отличный встроенный интерфейс.

Если вам нужно отправлять и получать данные между мобильным или веб-приложением, вы не ошибетесь с Django Rest Framework.

Читайте также: