Django + Реакция: Как подключить их для развертывания? - PullRequest
0 голосов
/ 16 марта 2020

Я запускаю приложение с Django+DRF, CELERY+REDIS, ReactJs+REDUX & JWT, и мне трудно подключить backend к frontend для развертывания.

я использовал create-react-app для генерации кода React; и npm run build для создания производственной сборки.

Я искал, но не могу найти учебник о том, как связать их вместе.

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

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Как вы упомянули в комментариях, это решение кажется мне разумным.

Развертывание Seprate React Frontend и Django DRF API

В вашем случае, как я понял вы можете запустить вашу версию DEV Django + DRF на случайном порту, например, localhost: 5000 /. Затем вы можете запустить DEV-сервер в приложении create-реагировать на другом порту, например, localhost: 8080 /. В целях тестирования вы можете проверить соединения между веб-интерфейсом и внутренним интерфейсом, используя URL-адреса DRF в приложении React.

После этого вы можете создать приложение React и добавить пакет. js в качестве стандартного файла js в свой файл. index. html в Django проекте. Создайте «домашний» URL в django и соедините его с простым шаблоном, который вы используете в index. html в приложении React.

Ваш пакет. js будет включать все необходимые библиотеки. Но для рабочей версии на сервере вам нужно будет собрать приложение еще раз для фактических URL с реальным доменом.

Надеюсь, это поможет.

1 голос
/ 16 марта 2020

Вам не нужно перемещать файлы React "в" Django. Просто обслуживайте их отдельно.

Вот как я обслуживаю свои проекты:

enter image description here

Я обслуживаю мой API с /api/ url, поэтому вот примерное представление моей Nginx конфигурации:

server {

    # urls that start with /api or /admin
    location ~ ^/(api|admin) {
        # pass them to uwsgi or gunicorn
        ...
    }

    # urls that start with /api or /admin
    location /media  {
        # serve from your project's media folder
        ...
    }

    # urls that start with /static/admin 
    location /static/admin {
        # these requests are made to admin's static files
        # serve them from your staticroot folder
        # i.e. where your files are stored after you run `collectstatic`
        ...
    }

    # everything else
    location / {
        # serve from frontend build folder
        root   /path/to/the/build/folder;
        index  index.html;
        # this is important
        # first try to find files matching url, like css, or js, or favicon
        # if nothing found, serve the index.html            
        try_files $uri /index.html; 
    }
}
...