НОВИНКА! VPS на базе EPYC + NVMe

Войти
+1 (855) 311-1555

Как создать простое приложение с помощью Django и React

15 мин чтения - 28 ноября 2025 г.

hero section cover

Table of contents

  • Как создать простое приложение с помощью Django и React
  • ПроектDjango и React для начинающих - создаем приложение для заметок на основе FullStack
  • Требования к настройке и установке
  • Создание бэкенда с помощью Django
  • Создание фронтенда с помощью React
  • Соединение Django и React
  • Запуск и тестирование приложения
  • Резюме и дальнейшие шаги
  • Вопросы и ответы

Share

Узнайте, как создать полнофункциональное веб-приложение, используя Django для бэкенда и React для фронтенда, с пошаговым руководством.

Как создать простое приложение с помощью Django и React

Хотите создать веб-приложение с мощным бэкендом и динамичным фронтендом? Отличный способ добиться этого - использовать Django, фреймворк для Python, в паре с React, библиотекой JavaScript. Django решает такие задачи бэкенда, как управление базами данных и создание API, а React создает отзывчивый интерактивный пользовательский интерфейс.

Ключевые шаги:

  1. Настройте среду:- Установите Python 3.x для Django и Node.js для React.

    • Используйте виртуальные среды для управления зависимостями Python.
    • Подтвердите установку с помощью python --version, node --version и npm --version.
  2. Организуйте свой проект:- Создайте отдельные папки для бэкенда Django и фронтенда React.

    • Используйте django-admin startproject для настройки бэкенда и npx create-react-app для инициализации фронтенда.
  3. Создайте бэкенд:- Создайте приложения Django, определите модели и сгенерируйте миграции.

    • Используйте Django REST Framework для создания конечных точек API.
    • Настройте django-cors-headers для обеспечения связи между фронтендом и бэкендом.
  4. Разработка фронтенда:- Используйте компоненты React для управления задачами и взаимодействием с пользователями.

    • Установите Axios для API-запросов и интегрируйте его с конечными точками Django.
    • Оформите приложение с помощью CSS для создания чистого пользовательского интерфейса.
  5. Подключение и тестирование:- Запустите Django на localhost:8000 и React на localhost:3000.

    • Протестируйте конечные точки API с помощью таких инструментов, как Postman, или непосредственно в браузере.
    • Обеспечьте правильные настройки CORS для бесперебойной связи.

Такая настройка позволит вам эффективно построить полностековое приложение с четким разделением между бэкендом и фронтендом. Следуйте этим шагам, чтобы создать масштабируемое интерактивное веб-приложение.

ПроектDjango и React для начинающих - создаем приложение для заметок на основе FullStack

Django

Требования к настройке и установке

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

Системные требования и инструменты

Чтобы начать работу, на вашей машине разработки потребуется Python 3.x для Django и Node.js для React. В частности, Django 5.0 требует Python 3.x, а React работает с Node.js версии 12 или выше.

Установка Python: Вы можете загрузить Python непосредственно с официального сайта или воспользоваться менеджером пакетов вашей системы. Для пользователей macOS Homebrew упрощает процесс с помощью brew install python. Пользователи Windows должны взять установщик с сайта python.org, а пользователи Linux могут установить его с помощью команд вроде apt install python3 на Ubuntu или аналогичных команд для других дистрибутивов.

Установка Node.js и npm: Node.js поставляется в комплекте с npm (Node Package Manager). Вам понадобится npm версии 6 или выше, надежным вариантом является версия 7.5.4. Загрузите Node.js с сайта nodejs.org, который автоматически включит npm.

Виртуальные среды Python: Использование виртуальных окружений - это ключ к бесконфликтному управлению зависимостями конкретного проекта. Вы можете использовать встроенный модуль venv или такие инструменты, как pipenv или virtualenvwrapper для расширения возможностей. Если вы работаете под Windows, пакет virtualenvwrapper-win предоставляет аналогичную функциональность.

Чтобы подтвердить установку, выполните эти команды в терминале:

python --version node --version npm --version

Создание структуры проекта

Хорошо организованная структура проекта необходима для разделения и управления кодом бэкенда и фронтенда. Начните с создания главной директории для вашего проекта:

mkdir django-react-app cd django-react-app

Внутри этой директории создайте две папки: одну для бэкенда Django и другую для фронтенда React. Такое разделение позволит вам поддерживать и развертывать каждую часть независимо друг от друга.

Настройтевиртуальную среду Python в каталоге проекта:

python -m venv venv

Активируйте виртуальную среду:

  • На macOS/Linux: source venv/bin/activate
  • В Windows: venv\Scripts\activate

Этот шаг гарантирует, что все зависимости Python для вашего проекта изолированы.

Установка необходимых пакетов

Когда ваше окружение готово, пришло время установить необходимые пакеты для Django и React.

Пакеты для бэкенда Django: Пока ваша виртуальная среда активна, установите Django и поддерживающие его библиотеки с помощью pip:

pip install django pip install djangorestframework pip install django-cors-headers
  • Django обрабатывает логику на стороне сервера, управление базами данных и маршрутизацию URL.
  • Django REST Framework упрощает процесс создания RESTful API, облегчая создание конечных точек для вашего фронтенда React.
  • Django-cors-headers обеспечивает кросс-оригинальный обмен ресурсами (CORS), который необходим для связи между фронтендом React (работающим на порту 3000) и бэкендом Django (работающим на порту 8000).

Настройка React Frontend: Чтобы настроить среду React, воспользуйтесь инструментом create-react-app. Эта команда инициализирует проект React и устанавливает все необходимые зависимости:

npx create-react-app frontend

Это создаст новый проект React в директории frontend, укомплектованный необходимыми пакетами, инструментами разработки и скриптами сборки.

Дополнительный пакет Frontend: После настройки проекта React перейдите в каталог frontend и установите Axios, библиотеку для выполнения HTTP-запросов к API Django:

cd frontend npm install axios

На этом этапе ваша среда разработки полностью укомплектована Python 3.x, Django, Node.js, React и всеми необходимыми инструментами. Виртуальная среда Python обеспечивает изоляцию зависимостей бэкенда, а npm отдельно обрабатывает пакеты JavaScript. Теперь вы готовы приступить к созданию своего полнофункционального приложения!

Создание бэкенда с помощью Django

Создайте бэкенд на Django с моделями баз данных, конечными точками API и интеграцией с фронтендом на React.

Создание проекта Django и приложения

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

Перейдите в корневой каталог вашего проекта (где настроено ваше виртуальное окружение) и создайте проект Django:

django-admin startproject backend .

Эта команда создаст файлы проекта непосредственно в текущем каталоге, избегая дополнительной папки. Вы заметите новые файлы, такие как manage.py (для запуска команд Django) и каталог backend, содержащий такие файлы, как settings.py, urls.py, asgi.py и wsgi.py.

Далее создайте приложение для работы с определенной функциональностью. Например, систему управления задачами:

python manage.py startapp tasks

Это создаст каталог tasks с основными файлами, такими как models.py, views.py, admin.py, и папку migrations. Обязательно избегайте конфликтов имен со встроенными именами вроде "django" или "test".

Зарегистрируйте приложение в настройках проекта, добавив его в список INSTALLED_APPS в файле backend/settings.py:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'corsheaders', 'tasks', # Зарегистрируйте ваше приложение ].

Настройка моделей и сериализаторов

Определите структуру данных с помощью моделей Django. Например, простая модель Task для приложения по управлению задачами может быть добавлена в tasks/models.py:

from django.db import models class Task(models.Model): title = models.CharField(max_length=200) description = models.TextField(blank=True) completed = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ['-created_at'] def __str__(self): return self.title

Эта модель включает такие поля, как CharField для короткого текста, TextField для более длинного содержимого, BooleanField для значений true/false и DateTimeField для временных меток. Класс Meta определяет такие параметры, как упорядочивание по умолчанию.

Примените модель к вашей базе данных, запустив миграцию:

python manage.py makemigrations tasks python manage.py migrate

Чтобы преобразовать данные модели в JSON, используйте сериализаторы Django REST Framework. В файле tasks/serializers.py определите сериализатор для модели Task:

from rest_framework import serializers from .models import Task class TaskSerializer(serializers.ModelSerializer): class Meta: model = Task fields = ['id', 'title', 'description', 'completed', 'created_at', 'updated_at'] read_only_fields = ['created_at', 'updated_at'].

ModelSerializer автоматически генерирует поля и методы на основе модели. Явное перечисление полей позволяет избежать непреднамеренного раскрытия конфиденциальных данных.

Создание конечных точек API

Django REST Framework упрощает создание API. Для стандартных CRUD-операций используйте ViewSets с маршрутизаторами для создания чистой, RESTful структуры.

В файле tasks/views.py создайте представления API:

from rest_framework import viewsets from rest_framework.permissions import AllowAny from .models import Task from .serializers import TaskSerializer class TaskViewSet(viewsets.ModelViewSet): queryset = Task.objects.all() serializer_class = TaskSerializer permission_classes = [AllowAny] # Только для разработки

ModelViewSet автоматически обрабатывает листинг, создание, извлечение, обновление и удаление задач.

Настройте маршрутизацию URL в tasks/urls.py:

from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import TaskViewSet router = DefaultRouter() router.register(r'tasks', TaskViewSet) urlpatterns = [ path('api/', include(router.urls)), ].

Включите эти URL в основной файл backend/urls.py:

from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('tasks.urls')), ]

Настройка CORS-заголовков

Чтобы ваш фронтенд React (работающий на порту 3000) мог взаимодействовать с бэкендом Django (на порту 8000), настройте кросс-оригинальный обмен ресурсами (CORS). Без этого браузеры блокируют кросс-оригинальные запросы по соображениям безопасности.

Обновите файл backend/settings.py, чтобы включить в него конфигурацию CORS:

MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', # Добавьте это сверху 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # Настройки CORS для разработки CORS_ALLOWED_ORIGINS = [ "http://localhost:3000", # сервер разработки React "http://127.0.0.1:3000", ] CORS_ALLOW_CREDENTIALS = True

Для быстрого тестирования можно использовать CORS_ALLOW_ALL_ORIGINS = True, но указание разрешенных источников более безопасно.

Тестирование конечных точек API

Прежде чем интегрировать фронтенд React, протестируйте конечные точки API, чтобы убедиться, что они работают так, как ожидается. Запустите сервер разработки Django:

python manage.py runserver

Получите доступ к API по адресу http://127.0.0.1:8000/api/tasks/. Используйте просматриваемый API для тестирования таких операций, как GET и POST запросы.

В качестве альтернативы можно протестировать с помощью cURL или Postman:

# Тестовый GET-запрос для получения списка задач curl -X GET http://127.0.0.1:8000/api/tasks/ # Тестовый POST-запрос для создания задачи curl -X POST http://127.0.0.1:8000/api/tasks/ \ -H "Content-Type: application/json" \ -d '{"title": "Test Task", "description": "Это тестовая задача"}'

Для автоматизированного тестирования добавьте тестовые случаи в файл tasks/tests.py:

from rest_framework.test import APITestCase from rest_framework import status from .models import Task class TaskAPITestCase(APITestCase): def test_create_task(self): # Добавьте сюда ваши утверждения и логику тестирования pass

Когда бэкенд создан, вы готовы подключить его к фронтенду React.

Создание фронтенда с помощью React

Чтобы создать привлекательный интерфейс для бэкенда Django, вы будете использовать React для управления взаимодействием с пользователем - от просмотра задач до добавления новых.

Настройка проекта React

Начните с настройки React-фронтенда с помощью Create React App. Перейдите в корневую директорию проекта (где находится ваш бэкенд Django) и выполните команду:

npx create-react-app frontend cd frontend

Эта команда устанавливает приложение React с такими необходимыми файлами, как package.json, src/App.js и public/index.html. В нее также включены такие инструменты, как webpack для создания пакетов, Babel для компиляции JavaScript и сервер разработки для тестирования.

Далее установите Axios для обработки HTTP-запросов к вашему Django API:

npm install axios

Axios упрощает вызовы API, управляя разбором JSON и предлагая лучшую обработку ошибок, чем встроенная функция fetch(). Он также поддерживает такие функции, как перехватчики запросов и ответов.

Теперь структура ваших папок должна выглядеть следующим образом:

project-root/ ├── backend/ │ ├── manage.py │ ├── backend/ │ └── tasks/ └── frontend/ ├── package.json ├── public/ └── src/

Чтобы убедиться, что все работает, запустите сервер разработки React:

npm start

Это запустит приложение по адресу http://localhost:3000, отобразив стандартную страницу приветствия React. Держите этот сервер запущенным во время разработки - он автоматически перезагружается при внесении изменений.

Создание компонентов React

Давайте создадим компонент TaskList для отображения задач, полученных из Django API. Добавьте следующее в src/components/TaskList.js:

import React from 'react'; const TaskList = ({ tasks, onToggleComplete, onDeleteTask }) => { return ( <div className="task-list"> <h2>Your Tasks</h2> {tasks.length === 0 ? ( <p>Нет доступных задач. Создайте свою первую задачу!</p> ) : ( <ul> {tasks.map((task) => ( <li key={task.id} className={`task-item ${task.completed ? 'completed' : ''}'}> <div className="task-content"> <h3>{task.title}</h3> <p>{task.description}</p> <small>Created: {new Date(task.created_at).toLocaleDateString()}</small> </div> <div className="task-actions"> <button onClick={() => onToggleComplete(task.id, !task.completed)} className={task.completed ? 'btn-undo' : 'btn-complete'} > {task.completed ? 'Undo' : 'Complete'} </button> <button onClick={() => onDeleteTask(task.id)} className="btn-delete" > Delete </button> </div> </li> ))} </ul> )} </div> ); }; export default TaskList;

Далее создайте компонент TaskForm для добавления новых задач. Добавьте его в файл src/components/TaskForm.js:

import React, { useState } from 'react'; const TaskForm = ({ onAddTask }) => { const [title, setTitle] = useState(''); const [description, setDescription] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const handleSubmit = async (e) => { e.preventDefault(); if (!title.trim()) return; setIsSubmitting(true); try { await onAddTask({ title: title.trim(), description: description.trim() }); setTitle(''); setDescription(''); } catch (error) { console.error('Ошибка при добавлении задачи:', error); } finally { setIsSubmitting(false); } }; return ( <form onSubmit={handleSubmit} className="task-form"> <h2>Add New Task</h2> <div className="form-group"> <input type="text" placeholder="Заголовок задачи" value={title} onChange={(e)=> setTitle(e.target.value)} disabled={isSubmitting} required /> </div> <div className="form-group"> <textarea placeholder="Описание задачи (необязательно)" value={description} onChange={(e) => setDescription(e.target.value)} disabled={isSubmitting} rows="3" /> </div> <button type="submit" disabled={isSubmitting || !title.trim()}> {isSubmitting ? 'Adding...' : 'Add Task'} </button> </form> ); }; export default TaskForm;

Для базовой стилизации создайте файл src/App.css и добавьте в него:

.task-list { margin: 20px 0; } .task-item { display: flex; justify-content: space-between; align-items: center; padding: 15px; border: 1px solid #ddd; margin-bottom: 10px; border-radius: 5px; } .task-item.completed { background-color: #f0f8f0; text-decoration: line-through; opacity: 0.7; } .task-form { background: #f9f9f9; padding: 20px; border-radius: 5px; margin-bottom: 20px; } .form-group { margin-bottom: 15px; } .form-group input, .form-group textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 3px; } .btn-complete, .btn-undo, .btn-delete { margin-left: 10px; padding: 5px 10px; border: none; border-radius: 3px; курсор: указатель; } .btn-complete { background: #28a745; цвет: белый; } .btn-undo { background: #ffc107; цвет: черный; } .btn-delete { фон: #dc3545; цвет: белый; }

Управление состоянием и интеграция с API

Такие хуки React, как useState и useEffect, позволяют легко управлять состоянием и взаимодействовать с бэкендом Django. Чтобы централизовать вызовы API, создайте служебный файл src/services/api.js:

import axios from 'axios'; const API_BASE_URL = 'http://127.0.0.1:8000/api'; const api = axios.create({ baseURL: API_BASE_URL, headers: { 'Content-Type': 'application/json', }, }); export const taskAPI = { getTasks: () => api.get('/tasks/'), createTask: (taskData) => api.post('/tasks/', taskData), updateTask: (taskId, taskData) => api.put(`/tasks/${taskId}/`, taskData), deleteTask: (taskId) => api.delete(`/tasks/${taskId}/`), }; export default api;

Наконец, интегрируйте все в src/App.js:

import React, { useState, useEffect } from 'react'; import TaskList from './components/TaskList'; import TaskForm from './components/TaskForm'; import { taskAPI } from './services/api'; import './App.css'; function App() { const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchTasks(); }, []); const fetchTasks = async () => { try { setLoading(true); const response = await taskAPI.getTasks(); setTasks(response.data); } catch (err) { setError(err); } finally { setLoading(false); } }; // Дополнительные методы для добавления, обновления и удаления задач будут находиться здесь }

Благодаря этой настройке ваш React-фронтенд готов к интерактивной работе с задачами, при этом легко взаимодействуя с бэкендом Django.

background image
Ваш сервер сдерживает ваш рост?

Устали от медленного развертывания или ограничений пропускной способности? FDC Servers предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб. Готовы к модернизации?

Разблокируйте производительность прямо сейчас

Соединение Django и React

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

Настройка URL-адресов API в React

Ваше приложение React должно знать, где находятся конечные точки API Django. Для этого обновите файл src/services/api.js, добавив в него конфигурации, специфичные для конкретного окружения:

import axios from 'axios'; // Определяем базовый URL API в зависимости от окружения const getApiBaseUrl = () => { if (process.env.NODE_ENV === 'production') { return process.env.REACT_APP_API_URL || 'https://your-production-domain.com/api'; } return 'http://127.0.0.1:8000/api'; }; const API_BASE_URL = getApiBaseUrl(); const api = axios.create({ baseURL: API_BASE_URL, headers: { 'Content-Type': 'application/json', }, timeout: 10000, // 10-секундный таймаут }); export const taskAPI = { getTasks: () => api.get('/tasks/'), createTask: (taskData) => api.post('/tasks/', taskData), updateTask: (taskId, taskData) => api.put(`/tasks/${taskId}/`, taskData), deleteTask: (taskId) => api.delete(`/tasks/${taskId}/`), }; export default api;

Для производства добавьте в корень проекта React файл .env со следующим содержимым:

REACT_APP_API_URL=https://your-production-domain.com/api

Эта настройка гарантирует, что ваше приложение React сможет легко взаимодействовать с бэкендом Django, независимо от того, находитесь ли вы в локальной среде разработки или развертываете его на производстве. Когда конечные точки API настроены, вы готовы к получению данных из бэкенда и работе с ними.

Получение данных из бэкенда

После того как конфигурация API настроена, вы можете выполнять операции CRUD для управления данными между React и Django. Обновите src/App.js для обработки этих операций:

import React, { useState, useEffect } from 'react'; import TaskList from './components/TaskList'; import TaskForm from './components/TaskForm'; import { taskAPI } from './services/api'; import './App.css'; function App() { const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchTasks(); }, []); const fetchTasks = async () => { try { setLoading(true); setError(null); const response = await taskAPI.getTasks(); setTasks(response.data); } catch (err) { setError('Failed to fetch tasks. Please check your connection.'); console.error('Error fetching tasks:', err); } finally { setLoading(false); } }; const handleAddTask = async (taskData) => { try { const response = await taskAPI.createTask(taskData); setTasks(prevTasks => [...prevTasks, response.data]); } catch (err) { console.error('Error adding task:', err); throw err; // Повторный бросок, чтобы TaskForm обработал ошибку } }; const handleToggleComplete = async (taskId, completed) => { try { const taskToUpdate = tasks.find(task => task.id === taskId); const updatedTaskData = { ...taskToUpdate, completed }; const response = await taskAPI.updateTask(taskId, updatedTaskData); setTasks(prevTasks => prevTasks.map(task => task.id === taskId ? response.data : task ); } catch (err) { console.error('Ошибка обновления задачи:', err); } }; const handleDeleteTask = async (taskId) => { if (!window.confirm('Вы уверены, что хотите удалить эту задачу?')) { return; } try { await taskAPI.deleteTask(taskId); setTasks(prevTasks => prevTasks.filter(task => task.id !== taskId)); } catch (err) { console.error('Error deleting task:', err); } }; if (loading) { return <div className="loading">Loading tasks...</div>; } return ( <div className="App"> <header className="App-header"> <h1>Task Manager</h1> </header> <main className="container"> {error && <div className="error-message"> {error}</div>} <TaskForm onAddTask={handleAddTask} /> <TaskList tasks={tasks} onToggleComplete={handleToggleComplete} onDeleteTask={handleDeleteTask} /> </main> </div> ); } export default App;

Этот код управляет созданием, обновлением, удалением задач и обработкой ошибок. Пользовательский интерфейс обновляется немедленно, что обеспечивает плавность работы пользователя, а ошибки устраняются изящно, путем возврата изменений или вывода соответствующих сообщений.

Тестирование и отладка соединения

Одно из самых распространенных препятствий при соединении Django и React - ошибки CORS (Cross-Origin Resource Sharing). Они возникают из-за того, что браузеры блокируют запросы между различными источниками по соображениям безопасности. Во время разработки React обычно работает на localhost:3000, а Django - на localhost:8000, что создает сценарий кросс-оригинальности.

Чтобы решить проблемы CORS, убедитесь, что вы настроили CORS-заголовки в настройках Django, как описано в разделе "Настройка CORS-заголовков". После внесения изменений перезапустите ваш сервер Django, чтобы они применились.

Вот несколько распространенных ошибок API-запросов и их решения:

  • HTTP 400 (Bad Request): Обычно это означает, что в полезной нагрузке запроса отсутствуют или неправильно оформлены некоторые необходимые данные. Например, в ноябре 2023 года FintanMi столкнулся с ошибкой 400 при создании сообщества в проекте Django REST Framework и React, потому что в запросе отсутствовало поле owner. Всегда перепроверяйте, что ваш фронтенд отправляет все необходимые поля, ожидаемые моделями Django.
  • HTTP 405 (Метод не разрешен): Возникает, когда конечная точка API не поддерживает используемый метод HTTP. Например, FintanMi сообщил об ошибке 405 при попытке удалить пост, которая была решена путем обновления представления Django с generics.RetrieveUpdateAPIView на generics.RetrieveUpdateDestroyAPIView для включения поддержки запросов DELETE.

Запуск и тестирование приложения

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

Запуск серверов разработки

Для запуска приложения Django-React вам понадобятся два терминальных окна - по одному на каждый сервер. Такая настройка позволяет бэкенду и фронтенду работать независимо друг от друга, взаимодействуя через вызовы API.

Запуск бэкенд-сервера Django:

  1. Откройте первое окно терминала и перейдите в корневой каталог вашего проекта Django.

  2. Активируйте виртуальную среду Python:

    source venv/bin/activate
    
  3. Запустите сервер разработки Django:

    python manage.py runserver
    

    Сервер будет доступен по адресу http://127.0.0.1:8000/.

Запуск сервера React Frontend Server:

  1. Откройте второе окно терминала и перейдите в каталог проекта React:

    cd frontend
    
  2. Запустите сервер разработки React:

    npm start
    

    При этом автоматически откроется окно браузера по адресу http://localhost:3000/.

После запуска обоих серверов вы можете приступить к тестированию функциональности вашего приложения.

Тестирование полной функциональности приложения

Когда серверы запущены, а CORS и конечные точки API правильно настроены, пришло время проверить поток данных между фронтендом и бэкендом.

Проверка API бэкенда:

  • Протестируйте конечные точки API Django напрямую, посетив сайт:

    http://localhost:8000/api/tasks
    

    Это должно отобразить просматриваемый интерфейс API Django REST Framework, где вы можете выполнять операции CREATE и READ.

  • Зайдите в интерфейс администратора Django по адресу:

    http://localhost:8000/admin.
    

    Войдите в систему с учетными данными суперпользователя, чтобы создавать, редактировать или удалять задачи. Вы также можете протестировать операции UPDATE и DELETE по адресу:

    http://localhost:8000/api/tasks/{id}.
    

Интеграционное тестирование фронтенд-бэкенда:

  • Откройте ваше приложение React на http://localhost:3000 и убедитесь, что оно загружается корректно, отображая задачи из бэкенда Django.
  • Протестируйте каждую CRUD-операцию через интерфейс React:- Добавьте новую задачу и убедитесь, что она отображается как в React UI, так и в бэкенде.
    • Отредактируйте существующую задачу и убедитесь, что изменения сохранились.
    • Удалите задачу и убедитесь, что она удалена как из фронтенда, так и из базы данных.

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

Устранение распространенных проблем

Если во время тестирования вы столкнулись с какими-либо проблемами, вот несколько распространенных способов их устранения.

Ошибки подключения к API:

  • Убедитесь, что оба сервера работают на соответствующих портах: Django на http://localhost:8000 и React на http://localhost:3000.

  • Используйте инструменты разработчика браузера (вкладка "Сеть") для определения кодов состояния HTTP, таких как 404 или 500.

  • Проверьте настройки прокси в файле package.json проекта React:

    "proxy": "http://localhost:8000".
    

    Если вы внесли изменения, перезапустите сервер React.

Проблемы с запуском сервера:

  • Если сервер Django не запускается, проверьте отсутствие миграций:

    python manage.py makemigrations python manage.py migrate
    
  • При проблемах с сервером React попробуйте переустановить зависимости:

    npm install
    

Проблемы с потоком данных:

  • Используйте инструменты разработчика браузера для проверки сетевых запросов и консольных ошибок.
  • Добавьте отладочные операторы, например console.log() в React или print statements в представлениях Django, чтобы отследить поток данных.
  • Дважды проверьте, что URL-адреса API в вашем приложении React точно соответствуют шаблонам URL-адресов Django, включая косые черты (например, /api/tasks/).

Резюме и дальнейшие шаги

Вы создали веб-приложение, сочетающее в себе Django и React, что позволило вам получить представление о полностековой разработке. Этот проект раскрывает такие важные понятия, как отделение бэкенда от фронтенда, выполнение CRUD-операций и управление кросс-оригинальными запросами с помощью настроек CORS. Попутно вы поработали с REST-фреймворком Django для создания API и использовали хуки React для управления состоянием - навыки, позволяющие легко интегрировать эти два мощных инструмента.

Переход вашего приложения на новый уровень

Есть много возможностей для расширения функциональности вашего приложения. Например, вы можете добавить JWT-аутентификацию с помощью Django REST Framework для защиты пользовательских данных и доступа к API. Это позволит вам предлагать функции, ориентированные на конкретного пользователя, и персонализированный опыт.

Если ваше приложение нуждается в обновлениях в реальном времени, рассмотрите возможность использования Django Channels для включения поддержки WebSocket. Это идеально подходит для таких функций, как панели управления, чаты или уведомления, превращая ваше приложение в более динамичную и интерактивную платформу.

По мере роста вашего приложения становится важной расширенная визуализация данных. Объединив возможности рендеринга React с эффективным получением данных с бэкенда, вы сможете эффективно обрабатывать и отображать сложные наборы данных.

Подготовка к производству

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

Эти усовершенствования опираются на уже приобретенные вами навыки, такие как проектирование API, архитектура на основе компонентов и интеграция всего стека. Освоив эти передовые методы, вы будете хорошо подготовлены к работе над проектами корпоративного уровня и продолжите расти как веб-разработчик.

Вопросы и ответы

В чем преимущества использования Django для бэкенда и React для фронтенда при создании веб-приложения?

Использование Django для бэкенда и React для фронтенда создает сильную смесь для разработки современных веб-приложений. Django представляет собой надежный фреймворк с инструментами, упрощающими разработку бэкенда, в то время как React отлично подходит для создания динамичных и интерактивных пользовательских интерфейсов.

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

Как решить проблемы CORS при подключении фронтенда React к бэкенду Django?

Для решения проблем CORS между фронтендом React и бэкендом Django удобным решением является пакет django-cors-headers. Сначала установите его с помощью pip. Затем в файле settings.py добавьте 'corsheaders' в список INSTALLED_APPS. После этого включите 'corsheaders.middleware.CorsMiddleware' в самый верх списка MIDDLEWARE, чтобы обеспечить правильный порядок выполнения промежуточного ПО.

Во время разработки вы можете упростить ситуацию, установив CORS_ORIGIN_ALLOW_ALL = True в файле settings.py. Это позволит выполнять запросы из любого источника. Однако в производственной среде гораздо безопаснее определить конкретные доверенные домены с помощью параметра CORS_ALLOWED_ORIGINS. Такой подход помогает поддерживать более строгую безопасность.

С такой конфигурацией ваше приложение React сможет беспрепятственно взаимодействовать с API Django, оставаясь при этом в соответствии с требованиями CORS.

Как подготовить приложение Django и React к развертыванию в производстве?

Чтобы подготовить приложение Django и React к производству, начните с настройки параметров Django для безопасной установки. Это включает установку DEBUG на False и указание ALLOWED_HOSTS для контроля того, какие домены могут получить доступ к вашему приложению. Эти изменения необходимы для защиты вашего приложения в реальной среде.

Далее выберите надежную хостинговую платформу для бэкенда Django и статических файлов. Убедитесь, что ваша инфраструктура создана для работы с трафиком и требованиями производственного уровня. Для фронтенда React используйте соответствующие инструменты сборки, чтобы создать оптимизированную производственную сборку.

Когда приложение React будет готово, настройте веб-сервер, например Nginx, для обслуживания фронтенда React и бэкенда Django. Правильная настройка сервера обеспечит эффективную работу приложения и удобство для пользователей.

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

Блог

События этой недели

Другие статьи
Мониторинг вашего выделенного сервера или VPS, какие возможности появятся в 2025 году?

Мониторинг вашего выделенного сервера или VPS, какие возможности появятся в 2025 году?

Ознакомьтесь с лучшими инструментами мониторинга для выделенных серверов и VPS в 2025 году, уделяя особое внимание искусственному интеллекту, автоматизации и аналитике в реальном времени.

12 мин чтения - 28 ноября 2025 г.

Как выбрать лучший GPU-сервер для рабочих нагрузок искусственного интеллекта

10 мин чтения - 15 октября 2025 г.

Другие статьи
background image

У вас есть вопросы или вам нужно индивидуальное решение?

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание