Возможно ли разделение django frontend и backend с помощью API?
Я привык к Django и уже разработал сайт с полным Django или с Django API + React.
Для побочного проекта я думаю о создании проекта Django с 2 приложениями:
- 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) и использовать оба варианта.
это возможно, но совершенно неверная идея.
- Как это возможно. Неправильная версия: Попробуйте вспомнить, как мы можем создать интегрированный тест для нашего представления. Мы должны создать клиента и отправить запрос в Django на ваш view-url с args kwargs querystring e.t.c. В ответе вы уже ответили. Попробуйте представить: часть с клиентом - это ваш Django front, запрашиваемая часть - ваш backend.
То же самое работает не только в тесте, вы можете создать запрос, чтобы спросить что-то на совершенно другом сервере.
Redis/MemCashed e.t.c. (шаблон отправитель/получатель) Неправильная версия: Front Django общается с Backend через приложение Third part. Это может быть быстрее.
"Питоническая" версия. Как раз в вашем случае: Вы можете создать Backend Django часть как библиотеку с представлениями как интерфейсами. Часть Frontend Django полностью автономна, она импортирует и использует интерфейсы из библиотеки, которая является вашим "BackEnd модулем".
.
Если хотите - можете использовать "BackEnd Module" везде как импорт, а можете запустить его как сервер и запрашивать информацию по запросам.
Полная независимость в данном случае означает, что вы можете установить "BackEnd Module" без "FrontEnd Module". "Модуль FrontEnd может быть установлен и отдельно, и он должен взять из настроек, какие интерфейсы должны использоваться в качестве источника данных.
Надеюсь, я правильно понял ваш вопрос.