Интеграция Front End и Backend
Я планирую создать веб-приложение React/Django. Я планирую создать API на бэкенде для связи с моим приложением React. Как я понимаю, вы можете интегрировать React с django, включив ваше приложение react в каталог проекта django и указав на index.html в react.
Я все еще не уверен, какие преимущества это дает. Будет ли лучше просто разделить django и react приложение. Когда мне нужно будет хранить или получать данные, я смогу просто делать запросы к API django?
Лучше разделить два проекта по многим причинам, Главная причина - когда вам нужно построить мобильное или настольное приложение на том же бэкенде или базе данных, здесь на помощь приходит преимущество API, Есть много причин, таких как: разделение серверов для обработки запросов как фронтенда (статические файлы), так и бэкенда (API и БД).
Лучшим подходом является разделение и использование DRF (Django Rest Framework), эта библиотека предложит serializers
, которая в основном будет интерпретировать ваш запрос и затем обрабатывать его в классе/функции представления в Django, весь процесс происходит следующим образом (между фронтендом и бэкендом):
Вы создаете таблицы в базе данных (модели).
Вы создаете представления, и некоторые представления будут получать данные из сериализатора, чтобы обработать запрос, отправленный со стороны клиента (react).
Вы отображаете представления на урлы.
Теперь часть реакции:
Вы делаете несколько вызовов api.
Запрос отправляется на backend (в данном случае это django).
Запрос отправляется в формате данных "JSON", но python не понимает такой формат, поэтому существуют сериализаторы! Сериализатор интерпретирует данные и преобразует их в то, что понимает python (словарь), а затем запрос будет обработан представлением.
Ответ будет отправлен в react.
Надеюсь, это прояснит ситуацию для вас, для получения дополнительной информации о DRF:
https://www.django-rest-framework.org/
также сериализаторы могут изменить поле поиска для некоторого ресурса в вашем бэкенде, что довольно полезно, когда вы хотите искать имя вместо id в url
дополнительная информация о сериализаторах:
https://www.django-rest-framework.org/community/third-party-packages/#serializers