Как я могу настроить Django и React на один порт и обработать маршрутизацию? - PullRequest
0 голосов
/ 08 июля 2020

Проблема

Привет! Я пытаюсь настроить свое приложение Django -React, но мне не удается заставить их работать в одном порту (Django Rest API находится в порту 8000 и реагирует на 3000) с помощью реакции ссылки и маршруты маршрутизатора.

Я использую django, djangorestframework, react, react router и react router dom. Пожалуйста, помогите ??

Django API отлично работает для получения и отправки запросов, и они отлично загружаются с ListCreateAPIView s

Вот несколько изображений моих файлов. Дайте мне знать, если вам понадобится дополнительная информация.

Картинки

Структура проекта

Project Structure

models.py

enter image description here

serializers.py

enter image description here

api/urls.py

enter image description here

urls.py

enter image description here

settings.py

введите описание изображения здесь

Ответы [ 3 ]

2 голосов
/ 10 июля 2020

Порт - это определенная конечная точка сети c, которая привязана к экземпляру приложения, запущенному на сервере. Например, обычно, если я хочу подключиться к своему серверу через s sh, мне нужно будет подключиться через порт 22. Поскольку S SH работает на порту 22, ничто другое не может работать там, потому что как компьютер узнает, что трафик c, поступающий в порт 22, был для s sh или другого приложения, которое его слушало? Вот почему есть тысячи портов, которые вы можете использовать, и почему django и реагировать запускаются на разных портах, если вы запускаете их одновременно. Если вам интересно, я бы прочитал немного о портах и некоторых других основных c сетевых темах.

Теперь я думаю, что вы спрашиваете: я хочу запустить реагировать и django вместе, и я хочу, чтобы они могли общаться. Для этого нормально работать с разными портами, для разработки просто укажите приложение реакции для связи с django через указанный порт и то же самое для django. Когда вы на самом деле go запускаете приложение в производстве, вы запускаете программу на сервере и привязываете ее к порту, тогда ваши клиенты попадут в api, используя этот указанный порт. Поскольку в процессе производства они работают на разных машинах, столкновений не будет, так что это нормально. Иногда возникает ситуация, когда множество объектов пытается подключиться одновременно, и если что-то уже подключено к этому порту, в подключении будет отказано. Вот почему веб-сервер может быть настроен на прослушивание определенного порта c и пересылку трафика c другим пользователям, что позволяет одновременно обслуживать множество пользователей.

0 голосов
/ 09 июля 2020

Вы можете сделать это, если вы настроили nginx на своем сервере, а обратный прокси-сервер действует как маршрутизатор, поэтому вы можете сделать что-то ссылка

localhost / api -> locahost : 8000

локальный -> локальный: 3000

0 голосов
/ 09 июля 2020

ОТВЕТ

Это невозможно из-за того, что Django и React требуют для каждого отдельного порта для запуска. Для того, чтобы это работало, build из React должен быть сгенерирован, а затем импортирован и переработан Django, чтобы работало только приложение django и был открыт только порт Django.

Надеюсь, это поможет всем, у кого был этот вопрос.

Ура!

...