Reactjs - хороший фреймворк для внешнего интерфейса, а Django REST framework (DRF) - еще один отличный фреймворк для разработки API. Интересно, как обслуживать проекты React и Django на одном сервере и в одном порту! Наконец-то я нашел решение, и сегодня я его обсудю.

В этой статье мы создадим API, используя Django REST Framework и проект React (интерфейс), который будет использовать API. Идея очень проста: React получит названия книг из бэкэнда (Django) и отобразит их.

Backend (Django) проект

Для этого проекта я использую Django 2. Сначала создайте проект Django с именем book.
Установите django-rest-framework с помощью pip install django-rest-framework и добавьте rest_framework в INSTALLED_APPS список в settings.py.
Создайте два приложения с именами api и core с помощью python manage.py startapp api и python manage.py startapp core, затем добавьте приложение имена в INSTALLED_APPS список в settings.py.

Это наш INSTALLED_APPS список в settings.py:

Отредактируйте /api/views.py и добавьте следующие коды:

Настройте URL-адрес в book/urls.py (настройку URL-адреса можно выполнить более элегантно, но я пропущу его для краткости):

Запустите сервер, используя python manage.py runserver (он будет запускать сервер с портом по умолчанию 8000).

Протестируйте наш API

Postman - отличный инструмент для тестирования API. Откройте Почтальон и перейдите по адресу «http://127.0.0.1:8000/book/»:

Наш API работает нормально! Теперь займемся разработкой интерфейса с помощью React.

Фронтенд (React) проект

Мы будем использовать create-react-app пакет для создания проекта React. Сначала установите пакет «create-response-app», используя npm install create-react-app.

Теперь создайте приложение для реагирования с именем «book-frontend» create-react-app book-frontend внутри каталога проекта (книги).

Измените текущий каталог на «book-frontend» и запустите npm start.

Он будет запускать наш интерфейсный сервер на порте по умолчанию 3000.

Перейдите к localhost: 3000 в своем любимом браузере (я использую Google Chrome):

Мы будем использовать еще два пакета во фронтенде. Давайте сначала установим их:
axios: npm install axios
react-router-dom: npm install react-router-dom

Создайте папку с именем Component внутри папки src, затем внутри папки Component создайте папку с именем Book. Внутри книги создайте файл javascript с именем index.js (это означает: /src/Component/Book/index.js).
Поместите следующий код в index.js (этот код будет извлекать данные из серверной части и отображать их во внешнем интерфейсе).

Наш index.js:

И измените App.js следующим образом:

Все функции нашего книжного приложения на миллион долларов теперь завершены!
Перейдите к localhost: 3000, чтобы увидеть результат:

ОПС! Без слова «книги» ничего не показывается, верно?

Откройте консоль вашего браузера:

Нам необходимо решить проблему CORS.
Мы можем решить эту проблему с помощью библиотеки django-cors-headers.

Мое settings.py решение проблемы CORS:

Теперь перейдите к localhost: 3000 и посмотрите желаемый результат!

Совместное обслуживание React и Django

Это ключевой момент этой статьи, мы будем обслуживать эти два приложения вместе на одном сервере.

Создайте «сборочную» версию нашего веб-приложения.

Перейдите в каталог внешнего интерфейса книги и запустите npm run build. Это создаст каталог сборки.

Затем перейдите к setting.py и добавьте следующие строки:

Идите core/views.py, отсюда мы будем обслуживать наш интерфейс. Обновите его так:

Обновите /book/urls.py:

Теперь закройте все предыдущие серверы (если они активны до сих пор). Запустите сервер Django, используя python manage.py runserver. Зайдите в свой браузер, перейдите на http://127.0.0.1:8000/ и БУМ! Мы обслуживаем наши приложения Django и React на одном сервере!

Вы также можете прочитать:

  1. Понимание декораторов Python
  2. Функции как объект первого класса в Python
  3. Игра с наследованием в Python
  4. Замыкание в Python и Javascript
  5. Разработка нашего первого PWA с использованием React
  6. Шпаргалка по навигации по React
  7. Мин. Приоритет_в очереди в C ++
  8. Именование ваших переменных
  9. Совместное служение React и Koa

📝 Прочтите этот рассказ позже в Журнале.

👩‍💻 Просыпайтесь каждое воскресное утро и слушайте самые интересные истории из области технологий, ожидающие вас в вашем почтовом ящике. Прочтите информационный бюллетень« Примечательно в технологиях .