Чем отличается django от django rest framework
Хорошо, я только что закончил курс YouTube по руководствам по Django, и я более или менее понимаю Django в некоторой степени. Теперь проблема в остальном фреймворке Django. Google говорит, что его использовали для создания API, но я просто не понимаю. Если фреймворк Django можно использовать для создания веб-приложений, то для чего можно использовать фреймворк Django rest с точки зрения разработки веб-приложений. Под этим вопросом я подразумеваю, что это все, что вам нужно для создания веб-приложения, или вам нужно добавить его в остальную структуру? Какая связь между веб-приложением и API?. Нужен ли веб-приложению API для работы? Я буду признателен за простое объяснение разницы между ними и того, как они связаны друг с другом. Спасибо.
4 ответа
Django - это среда веб-разработки на Python, тогда как Django Rest Framework - это библиотека, используемая в Django для создания Rest API. Django Rest Framework специально разработан, чтобы упростить разработку операций CRUD в Django.
Django Rest Framework упрощает использование вашего Django Server в качестве REST API.
REST означает «передача репрезентативного состояния», а API - интерфейс прикладного программирования.
Вы можете создать спокойный api, используя обычный Django, но это будет очень аккуратно. DRF все упрощает. Для сравнения, вот простой GET-просмотр, использующий обычный Django, и другой, использующий Django Rest Framework:
из rest_framework импортировать дженерики
класс MyObjListCreateAPIView(generics.ListCreateAPIView):permission_classes = [permissions.IsAuthenticatedOrReadOnly]serializer_class = MyObjSerializer enter code here Обратите внимание, что с DRF у вас легко есть список и создание представлений, а также аутентификация.
Django создает веб-сайты, содержащие веб-страницы, в то время как Django REST Framework создает веб-API, позволяющий передавать данные по всемирной паутине.
Django - это веб-сервер, построенный на Python, а django-rest - это пакет для серверов django. Если вы используете только django без использования фреймворка django rest, скорее всего, вы будете создавать сайты с помощью 'серверного рендеринга', но если вы используете django-rest в своем приложении django, вы создадите apis, который позже будет использоваться другими интерфейсами, такими как реакция или vue.
Ваш вопрос был тем же вопросом, который я задавал старшему на работе, когда впервые узнал о Django и Django Rest Framework.
Я получил ответ, что Django Rest Framework помогла вам быстрее создавать конечные точки API, как один из комментариев с примерами кодов. Я советую вам прочитать комментарии от J. Hesters и CS здесь. Однако и меня не полностью удовлетворил ответ. Поработав с ними некоторое время, я думаю вот что:
Технически давайте забудем о Django Rest Framework. Вы можете использовать Django только для создания полнофункционального веб-приложения без использования каких-либо внешних фреймворков, таких как React, Angular и т. Д. Таким образом, вы использовали Django как для внутреннего, так и для внешнего интерфейса. На самом деле, делая это, у вас нет концепции backend и frontend. Ваше веб-приложение - это просто ваше веб-приложение, и все.
Однако, если вы хотите, чтобы ваш интерфейс выглядел красиво со сложным оформлением CSS, вы можете рассмотреть возможность использования фреймворков внешнего интерфейса (React, Angular). Конечно, вы можете использовать только Django, чтобы ваш интерфейс выглядел привлекательно, но для этого вам нужно написать много кода, а шаблон Django обычно не используется по сравнению с интерфейсными фреймворками.
Теперь предположим, что вы хотите использовать интерфейсную платформу. Если у вас нет REST API, и ваш код внешнего интерфейса пытается запросить данные с одного из ваших URL-адресов, вы получите строковые данные или HTML-страницу, подобную той, которую вы получаете от использования curl , бесполезно получать эти данные для вашего внешнего интерфейса. Однако, если у вас есть REST API, ваши серверные данные будут сериализованы таким образом, чтобы ваш интерфейсный код мог понять и десериализовать возвращенные данные в некоторые объекты данных, такие как словарь, которые вы можете использовать правильно.
Теперь Django против Django Rest Framework. Вы можете использовать только Django для создания REST API, но вам нужно написать больше кода и сделать больше дизайна, как в одном из приведенных выше комментариев, показанных в примере. Используя Django Rest Framework, вы можете писать меньше кода и лучше использовать его повторно.
Кроме того, я думаю, вы можете захотеть изучить разницу между API и REST API. Они взаимозаменяемы, но это не одно и то же. Например, когда вы используете Django, вы используете Django API. REST(ful) API, который является всего лишь одним из типов API, используется для веб-разработок клиент-сервер.
Django (Джанго) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation.
Веб-фреймворк Django используется в сайтах Instagram, Disqus, Mozilla, The Washington Times, Pinterest, YouTube, Google и др.
Проекты на Django для начинающих: двухчасовой видеокурсАрхитектура Django похожа на «Модель-Представление-Контроллер» (MVC). Контроллер классической модели MVC примерно соответствует уровню, который в Django называется Представление (англ. View), а презентационная логика Представления реализуется в Django уровнем Шаблонов (англ. Template). Из-за этого уровневую архитектуру Django часто называют «Модель-Шаблон-Представление» (MTV).
Основные возможности Django
- ORM, API доступа к БД с поддержкой транзакций;
- встроенный интерфейс администратора с уже имеющимися переводами на многие языки;
- диспетчер URL на основе регулярных выражений;
- расширяемая система шаблонов с тегами и наследованием;
- система кэширования;
- интернационализация;
- подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты;
- generic views — шаблоны функций контроллеров;
- авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и проч.;
- система фильтров (middleware) для построения дополнительных обработчиков запросов, как, например, включенные в дистрибутив фильтры для кэширования, сжатия, нормализации URL и поддержки анонимных сессий;
- библиотека для работы с формами (наследование, построение форм по существующей модели БД);
- встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение.
Django Rest Framework для создания API
Django Rest Framework (DRF) — это библиотека, которая работает со стандартными моделями Django для создания гибкого и мощного API для проекта. Эта статья поможет понять структуру DRF и дать вводные данные для начала его использования
Sportmaster Lab , Липецк, Москва, Санкт-Петербург , От 100 000 до 150 000 ₽
API DRF состоит из трёх слоев:
- Сериализатор преобразует информацию, хранящуюся в базе данных и определенную с помощью моделей Django, в формат, который легко и эффективно передается через API.
- Вид (ViewSet) определяет функции (чтение, создание, обновление, удаление), которые будут доступны через API.
- Маршрутизатор определяет URL-адреса, которые будут предоставлять доступ к каждому виду.
Когда не стоит использовать Django
- Для очень-очень больших приложений, т.к. для некоторого функционала специально подбирается язык и технология, плюс Django по архитектуре ближе к монолиту, чем к микросервисам.
- Если необходимо написать простейшее приложение, в котором не требуется работать с базой данных, выполнять операции с файлами или делать что-либо хоть немного сложное. Для таких ситуаций лучше подойдут микрофреймворки.
- Вы хотите сами написать все с нуля и знаете, что делаете.
- Вы или ваши коллеги совершенно не знакомы с Django/Python и у вас нет времени и ресурсов на наработку необходимых навыков.
Если все вышесказанное – не про ваш проект, то, вполне вероятно, Django вам подойдет.
Из личного опыта: идеальное применение Djnago для бэкенд разработки — написание бэкенда на хакатоне. Очень много встроенных фич и расширений, максимально удобная и быстрая разработка по сравнению с другими языками и фреймворками. Как мы знаем, на хакатоне время очень ограниченно.
Прим. перев.: Эта статья рассчитана в основном на тех кто только выбирает фреймворк для веб-разработки. Опытные разработчики на Django вряд ли узнают что-то новое.
Django описывают как «веб-фреймворк для перфекционистов с дедлайнами». Его создали, чтобы переходить от прототипов к готовым сервисам как можно быстрее.
Фреймворк поможет разработать CRUD приложение под ключ. С Django не придется изобретать велосипед. Он работает из коробки и позволит сосредоточиться на бизнес-логике и продуктах для обычных людей.
Плюсы Джанго
Принцип «Всё включено» («Batteries included»)
Фраза «всё включено» означает, что большинство инструментов для создания приложения — часть фреймворка, а не поставляются в виде отдельных библиотек.
Django содержит огромное количество функциональности для решения большинства задач веб-разработки. Вот некоторые из высокоуровневых возможностей Django, которые вам придётся искать отдельно, если вы предпочтёте микро-фреймворк:
- ORM
- Миграции базы данных
- Аутентификация пользователя
- Панель администратора
- Формы
Стандартизированная структура
Django как фреймворк задаёт структуру проекта. Она помогает разработчикам понимать, где и как добавлять новую функциональность.
Приложения Django
Приложения в Django позволяют разделить проект на несколько частей. Приложения устанавливаются путём добавления в settings.INSTALLED_APPS. Этот подход позволяет легко интегрировать готовые решения.
Безопасный по умолчанию
Django безопасен из коробки и включает механизмы предотвращения распространенных атак вроде SQL-инъекций (XSS) и подделки межсайтовых запросов (CSRF). Подробнее об этом можно почитать в официальном руководстве по безопасности.
REST Framework для создания API
Django REST Framework, который часто сокращают до «DRF», является библиотекой для построения API. Он имеет модульную и настраиваемую архитектуру, которая хорошо работает для создания как простых, так и сложных API.
В DRF политики аутентификации и разрешений доступны из коробки. Он поставляется с базовыми классами для CRUD операций и встроенной утилитой для тестирования разрабатываемого API.
GraphQL фреймворк для создания API
Большие REST API часто требуют большого количества запросов для получения всех необходимых данных. GraphQL — это язык запросов, который позволяет обмениваться связанными данными гораздо проще. Подробнее почитать про основные концепции GraphQL можно в официальной документации.
Graphene-Django позволит легко добавить соответствующую функциональность в ваш проект. Модели, формы, аутентификация, политики разрешений и другие функциональные возможности Django можно использовать для создания GraphQL API. Библиотека так же поставляется с утилитой для тестирования результата.
Недостатки Джанго
Django ORM
Django ORM сегодня значительно уступает последней SQLAlchemy.
Django ORM основан на шаблоне Active Record, который хуже, чем шаблон Unit of Work, используемый в SQLAlchemy. На практике это выражается в том, что в Django модели могут «сохранять» себя по желанию, а транзакции отключены по умолчанию. Подробнее об этом можно почитать в статье «Вещи, которые мне не нравятся в Django».
Django развивается медленно
Django является большим и монолитным фреймворком. Это позволяет сообществу разрабатывать сотни универсальных модулей и приложений, но снижает скорость разработки самого Django. Кроме того, фреймворк должен поддерживать обратную совместимость, поэтому он развивается относительно медленно.
В итоге: должен ли я выбрать Django?
Хотя Django ORM не так гибок, как SQLAlchemy, а большая экосистема многократно используемых модулей и приложений замедляет развитие инфраструктуры, очевидно, Django должен быть первым кандидатом на роль фреймворка для питониста.
Альтернативные легкие фреймворки типа Flask, хотя и позволяют быть свободнее Django в экосистеме и конфигурации, могут потребовать лишнего времени на поиск/создание дополнительных библиотек и функциональных возможностей в долгосрочной перспективе.
Стабильность Django и сообщество вокруг него выросли до невообразимых размеров с момента первого релиза. Официальная документация и учебные пособия по фреймворку являются одними из лучших в своём роде. А с каждой новой версией Django продолжает обрастать возможностями.
Django (Джанго) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation.
Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка — DRY (англ. Don’t repeat yourself)
Веб-фреймворк Django используется в сайтах Instagram, Disqus, Mozilla, The Washington Times, Pinterest, YouTube , Google и др.
Проекты на Django для начинающих: двухчасовой видеокурсАрхитектура Django похожа на «Модель-Представление-Контроллер» (MVC). Контроллер классической модели MVC примерно соответствует уровню, который в Django называется Представление (англ. View), а презентационная логика Представления реализуется в Django уровнем Шаблонов (англ. Template). Из-за этого уровневую архитектуру Django часто называют «Модель-Шаблон-Представление» (MTV).
Основные возможности Django
- ORM, API доступа к БД с поддержкой транзакций;
- встроенный интерфейс администратора с уже имеющимися переводами на многие языки;
- диспетчер URL на основе регулярных выражений;
- расширяемая система шаблонов с тегами и наследованием;
- система кэширования;
- интернационализация;
- подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты;
- generic views — шаблоны функций контроллеров;
- авторизация и аутентификация , подключение внешних модулей аутентификации : LDAP, OpenID и проч.;
- система фильтров (middleware) для построения дополнительных обработчиков запросов, как, например, включенные в дистрибутив фильтры для кэширования, сжатия, нормализации URL и поддержки анонимных сессий;
- библиотека для работы с формами (наследование, построение форм по существующей модели БД );
- встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение.
Django Rest Framework для создания API
Django Rest Framework (DRF) — это библиотека, которая работает со стандартными моделями Django для создания гибкого и мощного API для проекта. Эта статья поможет понять структуру DRF и дать вводные данные для начала его использования
Читайте также: