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

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

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

Узнайте, как создать полнофункциональное веб-приложение, используя 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. Правильная настройка сервера обеспечит эффективную работу приложения и удобство для пользователей.

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

Блог

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

Другие статьи
Контрольный список по укреплению серверов Linux

Контрольный список по укреплению серверов Linux

Пошаговый контрольный список для защиты сервера Linux. Охватывает SSH, брандмауэры, исправления, разрешения на файлы, SELinux/AppArmor и ведение журнала аудита

15 мин чтения - 8 мая 2026 г.

самоучитель iperf3: Тест скорости сети в Linux и Windows

10 мин чтения - 7 мая 2026 г.

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

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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