Какие части django MVC становятся неактуальными при использовании django + REST framework?

Недавно начал изучать Джанго. Короче говоря,

Если я решу объединить:

  • Django Framework на моей стороне сервера
  • REST как слой промежуточного программного обеспечения
  • некоторые из клиентских сред (например, React, Angular и т. д.)

какой из компонентов django MVC станет неактуальным?
Я предполагаю, что шаблоны компонентов. Существуют ли какие-либо другие фундаментальные компоненты (модель / вид...), которые в этом случае не понадобятся?

1 ответ

Решение

Исходя из вашего сообщения, что вы используете Django просто для извлечения данных из базы данных и передачи их обратно клиенту в формате JSON, и что ваши шаблоны будут отображаться на стороне клиента (используя, например, Angular), тогда вы правы, что вы скорее всего, вам не понадобятся шаблоны Django. Однако вам все равно потребуются какие-то модели (используете ли вы модели Django или что-то еще), а также контроллеры (которые Django называет представлениями) для того, чтобы:

  1. Выполните маршрутизацию URL (то есть, привязайте некоторый URL к некоторому контроллеру / функции просмотра).
  2. Сделайте некоторую обработку на стороне сервера. Даже если ваше приложение представляет собой одностраничное приложение и выполняет много операций на стороне клиента, вам все равно, вероятно, потребуется реализовать различные виды бизнес-требований и проверки на стороне сервера. Некоторые из этих требований вы, вероятно, можете присоединить к моделям, но другие вам может потребоваться реализовать в контроллерах.

Таким образом, хотя ваши контроллеры (иначе говоря, представления) могут быть намного "худее" из-за того, как вы структурируете свое приложение, они все равно будут в некоторой степени необходимы. Модели всегда будут необходимы, если вы хотите иметь чистый и согласованный API для вашей БД.

РЕДАКТИРОВАТЬ: Чтобы расширить это - хотя есть библиотека Python под названием Django REST Framework, она действительно только для того, чтобы помочь вам в создании RESTful API. Вы, конечно, можете создать RESTful API самостоятельно, используя Django, не используя его или какие-либо дополнительные библиотеки. В ответе пользователя D. Shawley на этот вопрос говорится: что такое RESTful-программирование? - API-интерфейс RESTful - это, по сути, всего лишь один, в котором ресурсы идентифицируются с помощью постоянного идентификатора (в данном случае URI), а ресурсы управляются с использованием общего набора глаголов (в данном случае, таких методов HTTP, как GET, POST, DELETE, так далее). Поэтому, используя эту идею URI в качестве существительных и HTTP-методов в качестве глаголов, ваша инфраструктура Django может поддерживать следующие операции RESTful:

  • GEThttps://your-app.com/product/123 - эта операция выбирает продукт, идентифицированный по идентификатору 123
  • POSThttps://your-app.com/product - эта операция создает новый продукт
  • PUThttps://your-app.com/product/123 - эта операция обновляет продукт, идентифицированный по идентификатору 123
  • DELETEhttps://your-app.com/product/123 - эта операция удаляет продукт, идентифицированный по идентификатору 123

Данные, возвращаемые этими операциями, необязательно должны быть в каком-либо конкретном формате (будь то JSON, XML или что-то еще). В приложении, которое строго придерживается принципов REST, клиент (потребитель вашего RESTful API, в данном случае ваше интерфейсное приложение) сможет указать (используя HTTP Accept заголовок) в каком формате они хотят использовать данные.

Я надеюсь, что это не слишком смущает, но на самом деле я хочу прояснить, что архитектура REST - это просто набор принципов, и API-интерфейсы, которые разрабатывают веб-программисты, могут не обязательно придерживаться этих принципов на 100%. Необходимость строгого соблюдения вашим приложением принципов RESTful зависит от ваших конкретных требований. Тогда задайте себе один вопрос: чего вы надеетесь достичь путем создания RESTful API с использованием Django? Для многих разработчиков ответ прост: "чтобы у меня был простой в использовании интерфейс для моего приложения Angular/React/ и т. Д. Для извлечения и обновления ресурсов на стороне сервера".

Другие вопросы по тегам