Возможно ли разделение django frontend и backend с помощью API?

Я привык к Django и уже разработал сайт с полным Django или с Django API + React.

Для побочного проекта я думаю о создании проекта Django с 2 приложениями:

  1. Django API 2) Django Front.

Я очень хочу разделить front/back, чтобы иметь возможность повторно использовать API в будущем, и мне нравится система представлений из Django.

Имеет ли смысл моя идея?

Редактирование 1: Для пояснения. Приложение 1: Django API, обслуживающий JSON. Приложение 2: приложение Django, использующее вызовы API в контроллерах для генерации представлений.

Вы определенно можете разделить front и back, помните, django просто создает конечные точки и потребляет их с помощью собственных представлений, вы даже можете использовать оба варианта.

Вот документация по представлениям django: https://docs.djangoproject.com/en/4.0/#the-view-layer

Вы можете использовать библиотеку, такую как React, в качестве фронтенда и подключиться к вашему api (django app) и использовать оба варианта.

это возможно, но совершенно неверная идея.

  1. Как это возможно. Неправильная версия: Попробуйте вспомнить, как мы можем создать интегрированный тест для нашего представления. Мы должны создать клиента и отправить запрос в Django на ваш view-url с args kwargs querystring e.t.c. В ответе вы уже ответили. Попробуйте представить: часть с клиентом - это ваш Django front, запрашиваемая часть - ваш backend.

То же самое работает не только в тесте, вы можете создать запрос, чтобы спросить что-то на совершенно другом сервере.

  1. Redis/MemCashed e.t.c. (шаблон отправитель/получатель) Неправильная версия: Front Django общается с Backend через приложение Third part. Это может быть быстрее.

  2. "Питоническая" версия. Как раз в вашем случае: Вы можете создать Backend Django часть как библиотеку с представлениями как интерфейсами. Часть Frontend Django полностью автономна, она импортирует и использует интерфейсы из библиотеки, которая является вашим "BackEnd модулем".

    .

Если хотите - можете использовать "BackEnd Module" везде как импорт, а можете запустить его как сервер и запрашивать информацию по запросам.

Полная независимость в данном случае означает, что вы можете установить "BackEnd Module" без "FrontEnd Module". "Модуль FrontEnd может быть установлен и отдельно, и он должен взять из настроек, какие интерфейсы должны использоваться в качестве источника данных.

Надеюсь, я правильно понял ваш вопрос.

Вернуться на верх