Django и React.js Production - PullRequest
       1

Django и React.js Production

0 голосов
/ 09 марта 2019

Когда я добавил React в свой проект Django. Вроде бы все работает. Но если я обновляю страницу в браузере, я получаю сообщение об ошибке:

enter image description here

Я понимаю, что Джанго пытается найти подходящее представление, но как сделать так, чтобы Реакт?

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

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

Не видя файл urls.py, я предполагаю, что у вас есть базовый / голый маршрут ("/"), перейдите в приложение React, которое отлично работает для первоначальных запросов (на домашнюю страницу), но начинает ломаться вниз при использовании ссылки или обновлении страницы.

Ваша маршрутизация должна в основном использовать приложение React так, как обычно используются 404 страницы - когда для запроса не найдено подходящих маршрутов на сервере. Важно, чтобы вы определили все другие маршруты выше маршрута к приложению React, чтобы все, что сервер знает, как обрабатывать, обрабатывалось сервером, а остальные передавались клиенту React.

Так что ваши URL должны выглядеть примерно так:

from django.conf.urls import url, include
from django.views.generic import TemplateView

urlpatterns = [
    url(r"^api/v1/", include("api_v1.urls", namespace="api_v1")),
    url(r"^.*", TemplateView.as_view(template_name="index.html")),
]

Где index.html - это приложение вашего React.

0 голосов
/ 09 марта 2019

Обычно это конфигурация Apache / NGINX (интерфейсный веб-сервер).

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

Пример nginx:

location ~ ^/your-django-view/?(.*) {
    # rewrite ^ index.html;
    proxy_pass http://127.0.0.1:8000;
    break;
}

127.0.0.1: 8000 должны быть изменены с вашим хостом django: порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...