NEU! EPYC + NVMe basierte VPS

Anmelden
+1 (855) 311-1555

Wie man eine einfache Anwendung mit Django und React erstellt

15 Min. Lesezeit - 28. November 2025

hero section cover

Table of contents

  • Wie man eine einfache Anwendung mit Django und React erstellt
  • Django und React Projekt für Einsteiger - Erstellen einer FullStack Notes App
  • Einrichtungsanforderungen und Installation
  • Aufbau des Backends mit Django
  • Erstellung des Frontends mit React
  • Verbindung von Django und React
  • Ausführen und Testen der App
  • Zusammenfassung und nächste Schritte
  • Häufig gestellte Fragen

Share

Lernen Sie Schritt für Schritt, wie Sie eine vollständige Webanwendung mit Django für das Backend und React für das Frontend erstellen.

Wie man eine einfache Anwendung mit Django und React erstellt

Möchten Sie eine Webanwendung mit einem starken Backend und einem dynamischen Frontend erstellen? Die Kombination von Django, einem Python-Framework, mit React, einer JavaScript-Bibliothek, ist eine gute Möglichkeit, dies zu erreichen. Django übernimmt Backend-Aufgaben wie Datenbankverwaltung und API-Erstellung, während React eine reaktionsschnelle, interaktive Benutzeroberfläche erstellt.

Wichtige Schritte:

  1. Richten Sie Ihre Umgebung ein:- Installieren Sie Python 3.x für Django und Node.js für React.

    • Verwenden Sie virtuelle Umgebungen, um Python-Abhängigkeiten zu verwalten.
    • Bestätigen Sie die Installationen mit python --version, node --version und npm --version.
  2. Organisieren Sie Ihr Projekt:- Erstellen Sie separate Ordner für das Django-Backend und das React-Frontend.

    • Verwenden Sie django-admin startproject für die Einrichtung des Backends und npx create-react-app für die Initialisierung des Frontends.
  3. Erstellen Sie das Backend:- Erstellen Sie Django-Anwendungen, definieren Sie Modelle und generieren Sie Migrationen.

    • Verwenden Sie das Django REST Framework, um API-Endpunkte zu erstellen.
    • Konfigurieren Sie django-cors-headers, um die Kommunikation zwischen Frontend und Backend zu ermöglichen.
  4. Entwickeln Sie das Frontend:- Verwenden Sie React-Komponenten, um Aufgaben und Benutzerinteraktionen zu verwalten.

    • Installieren Sie Axios für API-Anfragen und integrieren Sie es mit Django-Endpunkten.
    • Gestalten Sie die App mit CSS für eine saubere Benutzeroberfläche.
  5. Verbinden und Testen:- Führen Sie Django auf localhost:8000 und React auf localhost:3000 aus.

    • Testen Sie API-Endpunkte mit Tools wie Postman oder direkt im Browser.
    • Stellen Sie die richtigen CORS-Einstellungen für eine reibungslose Kommunikation sicher.

Mit diesem Setup können Sie effizient eine Full-Stack-Anwendung mit klarer Trennung zwischen Backend und Frontend erstellen. Befolgen Sie diese Schritte, um eine skalierbare, interaktive Webanwendung zu erstellen.

Django und React Projekt für Einsteiger - Erstellen einer FullStack Notes App

Django

Einrichtungsanforderungen und Installation

Bevor Sie mit der Entwicklung Ihrer Django- und React-Anwendung beginnen, müssen Sie Ihre Entwicklungsumgebung mit den erforderlichen Tools und Abhängigkeiten einrichten. Diese Grundlage wird Ihnen helfen, Ihre Django- und React-Komponenten reibungslos zu erstellen, zu integrieren und zu testen, während Sie fortfahren.

Systemanforderungen und Tools

Um mit der Entwicklung zu beginnen, benötigt Ihr Rechner Python 3.x für Django und Node.js für React. Django 5.0 erfordert Python 3.x, während React mit Node.js Version 12 oder höher funktioniert.

Installation von Python: Sie können Python direkt von der offiziellen Website herunterladen oder den Paketmanager Ihres Systems verwenden. Für macOS-Benutzer ist es mit Homebrew ganz einfach: brew install python. Windows-Benutzer sollten das Installationsprogramm von python.org herunterladen, während Linux-Benutzer es mit Befehlen wie apt install python3 unter Ubuntu oder ähnlichen Befehlen für andere Distributionen installieren können.

Einrichten von Node.js und npm: Node.js wird zusammen mit npm (Node Package Manager) ausgeliefert. Sie benötigen npm Version 6 oder höher, wobei Version 7.5.4 eine zuverlässige Wahl ist. Laden Sie Node.js von nodejs.org herunter, wo npm automatisch enthalten ist.

Virtuelle Python-Umgebungen: Die Verwendung virtueller Umgebungen ist der Schlüssel zur Verwaltung projektspezifischer Abhängigkeiten ohne Konflikte. Sie können das eingebaute venv-Modul oder Tools wie pipenv oder virtualenvwrapper für weitere Funktionen verwenden. Unter Windows bietet das Paket virtualenvwrapper-win eine ähnliche Funktionalität.

Um Ihre Installationen zu bestätigen, führen Sie diese Befehle in Ihrem Terminal aus:

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

Erstellen der Projektstruktur

Eine gut organisierte Projektstruktur ist unerlässlich, um Ihren Backend- und Frontend-Code getrennt und überschaubar zu halten. Beginnen Sie damit, ein Hauptverzeichnis für Ihr Projekt zu erstellen:

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

Innerhalb dieses Verzeichnisses erstellen Sie zwei Ordner: einen für Ihr Django-Backend und einen für Ihr React-Frontend. Diese Trennung ermöglicht es Ihnen, jeden Teil unabhängig voneinander zu warten und einzusetzen.

Richten Sie Ihre virtuelle Python-Umgebung innerhalb des Projektverzeichnissesein:

python -m venv venv

Aktivieren Sie die virtuelle Umgebung:

  • Unter macOS/Linux: source venv/bin/activate
  • Unter Windows: venv\Scripts\activate

Dieser Schritt stellt sicher, dass alle Python-Abhängigkeiten für Ihr Projekt isoliert sind.

Installation der erforderlichen Pakete

Nachdem Sie Ihre Umgebung eingerichtet haben, ist es an der Zeit, die erforderlichen Pakete für Django und React zu installieren.

Django-Backend-Pakete: Während Ihre virtuelle Umgebung aktiv ist, installieren Sie Django und seine unterstützenden Bibliotheken mit pip:

pip install django pip install djangorestframework pip install django-cors-headers
  • Django übernimmt die serverseitige Logik, die Datenbankverwaltung und das URL-Routing.
  • DasDjango REST Framework vereinfacht den Prozess der Erstellung von RESTful APIs und erleichtert die Erstellung von Endpunkten für Ihr React-Frontend.
  • Django-cors-headers ermöglicht Cross-Origin Resource Sharing (CORS), das für die Kommunikation zwischen Ihrem React-Frontend (läuft auf Port 3000) und Ihrem Django-Backend (läuft auf Port 8000) unerlässlich ist.

React-Frontend-Einrichtung: Um Ihre React-Umgebung einzurichten, verwenden Sie das Tool create-react-app. Dieser Befehl initialisiert ein React-Projekt und installiert alle notwendigen Abhängigkeiten:

npx create-react-app frontend

Dadurch wird ein neues React-Projekt in einem Frontend-Verzeichnis erstellt, komplett mit allen wichtigen Paketen, Entwicklungswerkzeugen und Build-Skripten.

Zusätzliches Frontend-Paket: Nachdem Sie Ihr React-Projekt eingerichtet haben, navigieren Sie in das Frontend-Verzeichnis und installieren Sie Axios, eine Bibliothek für HTTP-Anfragen an Ihre Django-API:

cd frontend npm install axios

Zu diesem Zeitpunkt ist Ihre Entwicklungsumgebung mit Python 3.x, Django, Node.js, React und allen notwendigen Tools ausgestattet. Die virtuelle Python-Umgebung stellt sicher, dass Ihre Backend-Abhängigkeiten isoliert sind, während npm Ihre JavaScript-Pakete separat verwaltet. Jetzt sind Sie bereit, mit der Entwicklung Ihrer Full-Stack-Anwendung zu beginnen!

Aufbau des Backends mit Django

Einrichten eines Django-Backends mit Datenbankmodellen, API-Endpunkten und Integration für ein React-Frontend.

Erstellen eines Django-Projekts und einer App

Beginnen Sie mit der Erstellung eines Django-Projekts, das Einstellungen, Datenbankkonfigurationen und app-spezifische Optionen enthält. Innerhalb dieses Projekts erstellen Sie eine Django-App - ein Python-Paket, das für bestimmte Aufgaben wie die Verwaltung von Benutzerdaten oder Inhalten entwickelt wurde.

Navigieren Sie zum Stammverzeichnis Ihres Projekts (wo Ihre virtuelle Umgebung eingerichtet ist) und erstellen Sie das Django-Projekt:

django-admin startproject backend .

Mit diesem Befehl werden die Projektdateien direkt im aktuellen Verzeichnis erstellt, ohne dass ein zusätzlicher Ordner angelegt wird. Sie werden neue Dateien wie manage.py (zur Ausführung von Django-Befehlen) und ein Backend-Verzeichnis mit Dateien wie settings.py, urls.py, asgi.py und wsgi.py sehen.

Als Nächstes erstellen Sie eine Anwendung für eine bestimmte Funktionalität. Zum Beispiel ein Aufgabenverwaltungssystem:

python manage.py startapp tasks

Dadurch wird ein Aufgabenverzeichnis mit wichtigen Dateien wie models.py, views.py, admin.py und einem Migrationsordner erstellt. Achten Sie darauf, Namenskonflikte mit eingebauten Namen wie "django" oder "test" zu vermeiden.

Registrieren Sie die Anwendung in Ihren Projekteinstellungen, indem Sie sie zur INSTALLED_APPS Liste in backend/settings.py hinzufügen:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'corsheaders', 'tasks', # Ihre App registrieren ]

Einrichten von Modellen und Serialisierern

Definieren Sie Ihre Datenstruktur mit Django-Modellen. Zum Beispiel kann ein einfaches Aufgabenmodell für die Aufgabenmanagement-App in tasks/models.py hinzugefügt werden:

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

Dieses Modell enthält Felder wie CharField für kurzen Text, TextField für längeren Inhalt, BooleanField für wahre/falsche Werte und DateTimeField für Zeitstempel. Die Meta-Klasse legt Optionen wie die Standardreihenfolge fest.

Wenden Sie das Modell auf Ihre Datenbank an, indem Sie Migrationen durchführen:

python manage.py makemigrations tasks python manage.py migrate

Um Modelldaten in JSON zu konvertieren, verwenden Sie Django REST Framework serializers. Definieren Sie in tasks/serializers.py einen Serializer für das Task-Modell:

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']

Der ModelSerializer generiert automatisch Felder und Methoden basierend auf dem Modell. Die explizite Auflistung von Feldern stellt sicher, dass Sie nicht ungewollt sensible Daten preisgeben.

Erstellen von API-Endpunkten

Das Django REST Framework vereinfacht die Erstellung von APIs. Für Standard-CRUD-Operationen verwenden Sie ViewSets mit Routern für eine saubere, RESTful-Struktur.

In tasks/views.py erstellen Sie API-Ansichten:

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] # Nur für Entwicklung

Das ModelViewSet übernimmt automatisch das Auflisten, Erstellen, Abrufen, Aktualisieren und Löschen von Aufgaben.

Richten Sie das URL-Routing in tasks/urls.py ein:

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)), ]

Fügen Sie diese URLs in die Hauptdatei backend/urls.py ein:

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

CORS-Header konfigurieren

Damit Ihr React-Frontend (das auf Port 3000 läuft) mit dem Django-Backend (auf Port 8000) kommunizieren kann, konfigurieren Sie Cross-Origin Resource Sharing (CORS). Ohne CORS blockieren Browser aus Sicherheitsgründen Cross-Origin-Anfragen.

Aktualisieren Sie backend/settings.py, um die CORS-Konfiguration aufzunehmen:

MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', # Fügen Sie dies am Anfang hinzu '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 Einstellungen für die Entwicklung CORS_ALLOWED_ORIGINS = [ "http://localhost:3000", # React Entwicklungsserver "http://127.0.0.1:3000", ] CORS_ALLOW_CREDENTIALS = True

Für schnelle Tests können Sie CORS_ALLOW_ALL_ORIGINS = True verwenden, aber die Angabe der erlaubten Ursprünge ist sicherer.

Testen von API-Endpunkten

Bevor Sie das React-Frontend integrieren, testen Sie die API-Endpunkte, um sicherzustellen, dass sie wie erwartet funktionieren. Starten Sie den Django-Entwicklungsserver:

python manage.py runserver

Greifen Sie auf die API unter http://127.0.0.1:8000/api/tasks/ zu . Verwenden Sie die durchsuchbare API, um Operationen wie GET- und POST-Anfragen zu testen.

Alternativ können Sie auch mit cURL oder Postman testen:

# GET-Anfrage testen, um Aufgaben aufzulisten curl -X GET http://127.0.0.1:8000/api/tasks/ # POST-Anfrage testen, um eine Aufgabe zu erstellen curl -X POST http://127.0.0.1:8000/api/tasks/ \ -H "Content-Type: application/json" \ -d '{"title": "Testaufgabe", "Beschreibung": "Dies ist eine Testaufgabe"}'

Für automatisierte Tests fügen Sie Testfälle in tasks/tests.py hinzu:

from rest_framework.test import APITestCase from rest_framework import status from .models import Task class TaskAPITestCase(APITestCase): def test_create_task(self): # Fügen Sie hier Ihre Assertions und Testlogik ein pass

Nachdem das Backend eingerichtet ist, können Sie es mit dem React-Frontend verbinden.

Erstellung des Frontends mit React

Um eine ansprechende Oberfläche für Ihr Django-Backend zu erstellen, werden Sie React verwenden, um die Benutzerinteraktionen zu verwalten - von der Anzeige von Aufgaben bis zum Hinzufügen neuer Aufgaben.

Einrichten eines React-Projekts

Beginnen Sie mit dem Einrichten Ihres React-Frontends mit Create React App. Navigieren Sie zum Stammverzeichnis Ihres Projekts (in dem sich auch Ihr Django-Backend befindet) und führen Sie aus:

npx create-react-app frontend cd frontend

Dieser Befehl richtet eine React-App mit wichtigen Dateien wie package.json, src/App.js und public/index.html ein. Er enthält auch Tools wie webpack für die Bündelung, Babel für die JavaScript-Kompilierung und einen Entwicklungsserver für Tests.

Als nächstes installieren Sie Axios, um HTTP-Anfragen an Ihre Django-API zu bearbeiten:

npm install axios

Axios macht API-Aufrufe einfacher, indem es JSON-Parsing verwaltet und eine bessere Fehlerbehandlung als die eingebaute fetch() -Funktion bietet. Es unterstützt auch Funktionen wie Request- und Response-Interceptors.

Ihre Ordnerstruktur sollte nun wie folgt aussehen:

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

Um sicherzustellen, dass alles funktioniert, starten Sie den React-Entwicklungsserver:

npm start

Dies startet die Anwendung unter http://localhost:3000 und zeigt die Standard-React-Willkommensseite an. Lassen Sie diesen Server während der Entwicklung laufen - er wird automatisch neu geladen, wenn Sie Änderungen vornehmen.

React-Komponenten erstellen

Lassen Sie uns eine TaskList-Komponente erstellen, um Aufgaben anzuzeigen, die von Ihrer Django-API geholt wurden. Fügen Sie das Folgende zu src/components/TaskList.js hinzu:

import React from 'react'; const TaskList = ({ tasks, onToggleComplete, onDeleteTask }) => { return ( <div className="task-list"> <h2>Your Tasks</h2> {tasks.length === 0 ? ( <p>Keine Aufgaben vorhanden. Erstellen Sie Ihre erste Aufgabe!</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" > Löschen </button> </div> </li> ))} </ul> )} </div> ); }; export default TaskList;

Als nächstes erstellen Sie eine TaskForm-Komponente zum Hinzufügen neuer Aufgaben. Fügen Sie diese zu src/components/TaskForm.js hinzu:

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('Fehler beim Hinzufügen der Aufgabe:', error); } finally { setIsSubmitting(false); } }; return ( <form onSubmit={handleSubmit} className="task-form"> <h2>Add New Task</h2> <div className="form-group"> <input type="text" placeholder="Aufgabentitel" value={title} onChange={(e) => setTitle(e.target.value)} disabled={isSubmitting} required /> </div> <div className="form-group"> <textarea placeholder="Aufgabenbeschreibung (optional)" 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;

Für einige grundlegende Styling, erstellen Sie eine src/App.css-Datei und fügen:

.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-ando, .btn-delete { margin-left: 10px; padding: 5px 10px; border: none; border-radius: 3px; cursor: pointer; } .btn-complete { background: #28a745; color: white; } .btn-undo { background: #ffc107; color: black; } .btn-delete { background: #dc3545; Farbe: weiß; }

Verwaltung von Status und API-Integration

React-Hooks wie useState und useEffect erleichtern die Verwaltung von Zuständen und die Interaktion mit Ihrem Django-Backend. Um API-Aufrufe zu zentralisieren, erstellen Sie eine Service-Datei 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('/Aufgaben/', taskData), updateTask: (taskId, taskData) => api.put(`/tasks/${taskId}/`, taskData), deleteTask: (taskId) => api.delete(`/tasks/${taskId}/`), }; export default api;

Schließlich integrieren Sie alles in 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); } }; // Zusätzliche Methoden zum Hinzufügen, Aktualisieren und Löschen von Aufgaben würden hierher gehören }

Mit diesem Setup ist Ihr React-Frontend bereit, Aufgaben interaktiv zu bearbeiten und gleichzeitig nahtlos mit Ihrem Django-Backend zu kommunizieren.

background image
Bremst Ihr Server Ihr Wachstum?

Haben Sie genug von langsamen Bereitstellungen oder Bandbreitenbeschränkungen? FDC Servers bietet sofortige dedizierte Leistung, globale Reichweite und flexible Pläne, die für jede Größenordnung geeignet sind. Sind Sie bereit für ein Upgrade?

Leistung jetzt freischalten

Verbindung von Django und React

Jetzt, da Ihr Backend und Ihr Frontend einsatzbereit sind, besteht der nächste Schritt darin, eine reibungslose Kommunikation zwischen ihnen zu gewährleisten. Dazu gehören die Einrichtung von API-Endpunkten, die Verwaltung von Anfragen und die Behebung von Integrationsproblemen.

Einrichten von API-URLs in React

Ihre React-Anwendung muss wissen, wo die Django-API-Endpunkte zu finden sind. Um dies zu erreichen, aktualisieren Sie die Datei src/services/api.js mit umgebungsspezifischen Konfigurationen:

import axios from 'axios'; // Ermitteln der API-Basis-URL anhand der Umgebung 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 Sekunden Timeout }); export const taskAPI = { getTasks: () => api.get('/tasks/'), createTask: (taskData) => api.post('/Aufgaben/', taskData), updateTask: (taskId, taskData) => api.put(`/tasks/${taskId}/`, taskData), deleteTask: (taskId) => api.delete(`/tasks/${taskId}/`), }; export default api;

Für die Produktion fügen Sie eine .env-Datei zu Ihrem React-Projektstamm mit dem folgenden Inhalt hinzu:

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

Dieses Setup stellt sicher, dass Ihre React-App nahtlos mit Ihrem Django-Backend interagieren kann, unabhängig davon, ob Sie in einer lokalen Entwicklungsumgebung oder in der Produktion arbeiten. Nachdem die API-Endpunkte konfiguriert sind, können Sie die Daten aus dem Backend abrufen und bearbeiten.

Abrufen von Daten aus dem Backend

Sobald die API-Konfiguration festgelegt ist, können Sie CRUD-Operationen durchführen, um Daten zwischen React und Django zu verwalten. Aktualisieren Sie src/App.js, um diese Operationen durchzuführen:

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('Aufgaben konnten nicht abgeholt werden, bitte überprüfen Sie Ihre Verbindung.'); console.error('Fehler beim Abholen von Aufgaben:', err); } finally { setLoading(false); } }; const handleAddTask = async (taskData) => { try { const response = await taskAPI.createTask(taskData); setTasks(prevTasks => [...prevTasks, response.data]); } catch (err) { console.error('Fehler beim Hinzufügen einer Aufgabe:', err); throw err; // Re-throw, damit TaskForm den Fehler behandeln kann } }; 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('Error updating task:', err); } }; const handleDeleteTask = async (taskId) => { if (!window.confirm('Sind Sie sicher, dass Sie diese Aufgabe löschen wollen?')) { return; } try { await taskAPI.deleteTask(taskId); setTasks(prevTasks => prevTasks.filter(task => task.id !== taskId)); } catch (err) { console.error('Fehler beim Löschen der Aufgabe:', 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;

Dieser Code behandelt die Erstellung, Aktualisierung und Löschung von Aufgaben sowie das Fehlermanagement. Die Benutzeroberfläche wird sofort aktualisiert, um eine reibungslose Benutzererfahrung zu gewährleisten, und Fehler werden elegant verwaltet, indem Änderungen rückgängig gemacht oder entsprechende Meldungen angezeigt werden.

Testen und Debuggen der Verbindung

Eine der häufigsten Hürden bei der Verknüpfung von Django und React ist der Umgang mit CORS-Fehlern (Cross-Origin Resource Sharing). Diese entstehen, weil Browser aus Sicherheitsgründen Anfragen zwischen verschiedenen Ursprüngen blockieren. Während der Entwicklung läuft React typischerweise auf localhost:3000, während Django auf localhost:8000 läuft, wodurch ein Cross-Origin-Szenario entsteht.

Um CORS-Probleme zu lösen, stellen Sie sicher, dass Sie die CORS-Header in Ihren Django-Einstellungen konfiguriert haben, wie im Abschnitt "CORS-Header konfigurieren" beschrieben. Nachdem Sie die Änderungen vorgenommen haben, starten Sie Ihren Django-Server neu, um sie zu übernehmen.

Hier sind einige häufige Fehler bei API-Anfragen und ihre Lösungen:

  • HTTP 400 (Schlechte Anfrage): Dies bedeutet in der Regel, dass einige erforderliche Daten in der Nutzlast der Anfrage fehlen oder falsch geformt sind. Im November 2023 trat beispielsweise bei FintanMi ein 400-Fehler auf, als er eine Community in einem Django REST Framework und React-Projekt erstellte, weil das Eigentümerfeld in der Anfrage fehlte. Vergewissern Sie sich immer, dass Ihr Frontend alle erforderlichen Felder sendet, die von den Django-Modellen erwartet werden.
  • HTTP 405 (Methode nicht erlaubt): Dies tritt auf, wenn der API-Endpunkt die verwendete HTTP-Methode nicht unterstützt. Zum Beispiel meldete FintanMi einen 405-Fehler, wenn er versuchte, einen Beitrag zu löschen. Dies wurde behoben, indem die Django-Ansicht von generics.RetrieveUpdateAPIView auf generics.RetrieveUpdateDestroyAPIView aktualisiert wurde, um Unterstützung für DELETE-Anfragen zu bieten.

Ausführen und Testen der App

Nachdem Ihr Django-Backend und Ihr React-Frontend verbunden sind, ist es an der Zeit, beide Entwicklungsserver zu starten und die Anwendung zu testen. Dazu müssen Sie zwei Server gleichzeitig laufen lassen und sicherstellen, dass alles reibungslos zusammenarbeitet.

Starten der Entwicklungsserver

Um Ihre Django-React-Anwendung zu starten, benötigen Sie zwei Terminal-Fenster - eines für jeden Server. Auf diese Weise können Backend und Frontend unabhängig voneinander arbeiten und über API-Aufrufe kommunizieren.

Starten Sie den Django-Backend-Server:

  1. Öffnen Sie das erste Terminalfenster und navigieren Sie zum Stammverzeichnis Ihres Django-Projekts.

  2. Aktivieren Sie Ihre virtuelle Python-Umgebung:

    source venv/bin/activate
    
  3. Starten Sie den Django-Entwicklungsserver:

    python manage.py runserver
    

    Der Server wird unter http://127.0.0.1:8000/ verfügbar sein .

Starten Sie den React Frontend Server:

  1. Öffnen Sie ein zweites Terminalfenster und navigieren Sie zu Ihrem React-Projektverzeichnis:

    cd frontend
    
  2. Starten Sie den React-Entwicklungsserver:

    npm start
    

    Dadurch öffnet sich automatisch ein Browser-Fenster auf http://localhost:3000/.

Sobald beide Server laufen, können Sie mit dem Testen der Funktionalität Ihrer Anwendung beginnen.

Testen der vollen App-Funktionalität

Wenn die Server laufen und CORS und API-Endpunkte richtig konfiguriert sind, ist es an der Zeit, den Datenfluss zwischen Frontend und Backend zu überprüfen.

Backend-API-Prüfung:

  • Testen Sie Ihre Django-API-Endpunkte direkt, indem Sie Folgendes besuchen:

    http://localhost:8000/api/tasks
    

    Es sollte die durchsuchbare API-Schnittstelle des Django REST Frameworks angezeigt werden, über die Sie CREATE- und READ-Operationen durchführen können.

  • Greifen Sie auf die Django-Verwaltungsoberfläche zu unter:

    http://localhost:8000/admin
    

    Melden Sie sich mit Ihren Superuser-Anmeldedaten an, um Aufgaben zu erstellen, zu bearbeiten oder zu löschen. Sie können auch UPDATE- und DELETE-Operationen testen, indem Sie folgende Seite besuchen:

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

Frontend-Backend-Integrationstests:

  • Öffnen Sie Ihre React-App unter http://localhost:3000 und stellen Sie sicher, dass sie korrekt geladen wird und Aufgaben aus dem Django-Backend anzeigt.
  • Testen Sie jede CRUD-Operation über die React-Schnittstelle:- Fügen Sie eine neue Aufgabe hinzu und prüfen Sie, ob sie sowohl in der React-Oberfläche als auch im Backend angezeigt wird.
    • Bearbeiten Sie eine bestehende Aufgabe und stellen Sie sicher, dass die Änderungen gespeichert werden.
    • Löschen Sie eine Aufgabe und stellen Sie sicher, dass sie sowohl aus dem Frontend als auch aus der Datenbank entfernt wird.

Wenn Ihre Anwendung Filter oder andere Funktionen enthält, testen Sie diese gründlich, um sicherzustellen, dass die Aufgaben wie erwartet angezeigt werden.

Behebung allgemeiner Probleme

Wenn Sie während des Testens auf Probleme stoßen, finden Sie hier einige gängige Lösungsvorschläge.

API-Verbindungsfehler:

  • Stellen Sie sicher, dass beide Server auf ihren jeweiligen Ports laufen: Django auf http://localhost:8000 und React auf http://localhost:3000.

  • Verwenden Sie die Browser-Entwicklertools (Registerkarte "Netzwerk"), um HTTP-Statuscodes wie 404 oder 500 zu identifizieren.

  • Überprüfen Sie die Proxy-Einstellung in der package.json-Datei Ihres React-Projekts:

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

    Wenn Sie Änderungen vornehmen, starten Sie den React-Server neu.

Probleme beim Start des Servers:

  • Wenn der Django-Server nicht startet, prüfen Sie, ob Migrationen fehlen:

    python manage.py makemigrations python manage.py migrate
    
  • Bei Problemen mit dem React-Server versuchen Sie, die Abhängigkeiten neu zu installieren:

    npm install
    

Datenfluss-Probleme:

  • Verwenden Sie Browser-Entwickler-Tools, um Netzwerkanfragen und Konsolenfehler zu untersuchen.
  • Fügen Sie Debugging-Anweisungen wie console.log() in React oder print-Anweisungen in Django-Ansichten hinzu, um den Datenfluss zu verfolgen.
  • Vergewissern Sie sich, dass die API-URLs in Ihrer React-Anwendung exakt mit den Django-URL-Mustern übereinstimmen, einschließlich der nachgestellten Schrägstriche (z. B. /api/tasks/).

Zusammenfassung und nächste Schritte

Sie haben eine Webanwendung erstellt, die Django und React kombiniert und Ihnen einen soliden Einstieg in die Full-Stack-Entwicklung ermöglicht. Dieses Projekt hebt wesentliche Konzepte hervor, wie die Trennung des Backends vom Frontend, die Durchführung von CRUD-Operationen und die Verwaltung von Cross-Origin-Anfragen mithilfe von CORS-Einstellungen. Auf dem Weg dorthin haben Sie mit dem Django REST Framework gearbeitet, um APIs zu erstellen, und React Hooks für die Zustandsverwaltung verwendet - Fähigkeiten, die eine reibungslose Integration zwischen diesen beiden leistungsstarken Tools ermöglichen.

Bringen Sie Ihre App auf die nächste Stufe

Es gibt viel Raum, um die Funktionalität Ihrer App zu erweitern. Sie können zum Beispiel eine JWT-Authentifizierung mit dem Django REST Framework hinzufügen, um Benutzerdaten und API-Zugang zu sichern. So können Sie benutzerspezifische Funktionen und personalisierte Erlebnisse anbieten.

Wenn Ihre Anwendung Echtzeit-Updates benötigt, sollten Sie Django Channels verwenden, um WebSocket-Unterstützung zu aktivieren. Dies ist ideal für Funktionen wie Live-Dashboards, Chat-Systeme oder Benachrichtigungen und macht Ihre App zu einer dynamischen und interaktiven Plattform.

Wenn Ihre Anwendung wächst, wird eine erweiterte Datenvisualisierung wichtig. Durch die Kombination der Rendering-Fähigkeiten von React mit dem effizienten Abrufen von Daten im Backend sind Sie in der Lage, komplexe Datensätze effektiv zu verarbeiten und anzuzeigen.

Vorbereitung auf die Produktion

Wenn Sie Ihre Anwendung für die Produktion vorbereiten, sollten Sie sich auf die Bereitstellung, Sicherheit und Leistung konzentrieren. Während das aktuelle Setup für die lokale Entwicklung gut geeignet ist, erfordern Produktionsumgebungen zusätzliche Schritte. Dazu gehören die Einrichtung von Umgebungsvariablen, die Optimierung Ihrer Datenbank und die Implementierung starker Mechanismen für die Fehlerbehandlung.

Diese Verbesserungen bauen auf den Fähigkeiten auf, die Sie bereits entwickelt haben - wie API-Design, komponentenbasierte Architektur und Full-Stack-Integration. Wenn Sie diese fortgeschrittenen Techniken beherrschen, sind Sie gut gerüstet, um Projekte auf Unternehmensebene in Angriff zu nehmen und sich als Webentwickler weiterzuentwickeln.

Häufig gestellte Fragen

Welche Vorteile bietet die Verwendung von Django für das Backend und React für das Frontend bei der Entwicklung einer Webanwendung?

Die Verwendung von Django für das Backend und React für das Frontend ergibt eine starke Mischung für die Entwicklung moderner Webanwendungen. Django bietet ein solides Framework, das mit Tools ausgestattet ist, die die Backend-Entwicklung rationalisieren, während React bei der Erstellung dynamischer und interaktiver Benutzeroberflächen glänzt.

Diese Kombination fördert eine saubere Trennung der Verantwortlichkeiten, wodurch die Codebasis übersichtlich bleibt und im Laufe der Zeit leichter erweitert werden kann. Die komponentenbasierte Struktur von React fördert die Wiederverwendung von UI-Elementen, und das REST-Framework von Django vereinfacht die Erstellung von APIs und gewährleistet eine reibungslose Kommunikation zwischen Frontend und Backend. Zusammen bieten sie einen schnellen, effizienten und benutzerzentrierten Ansatz für die Anwendungsentwicklung.

Wie löse ich CORS-Probleme bei der Verbindung eines React-Frontends mit einem Django-Backend?

Um CORS-Probleme zwischen einem React-Frontend und einem Django-Backend zu lösen, ist das Paket django-cors-headers eine praktische Lösung. Installieren Sie es zunächst mit pip. Dann fügen Sie in Ihrer settings.py-Datei "corsheaders" zur INSTALLED_APPS-Liste hinzu. Danach fügen Sie "corsheaders.middleware.CorsMiddleware" ganz oben in die MIDDLEWARE-Liste ein, um die richtige Reihenfolge der Middleware-Ausführung zu gewährleisten.

Während der Entwicklung können Sie die Dinge vereinfachen, indem Sie CORS_ORIGIN_ALLOW_ALL = True in Ihrer settings.py einstellen. Dies erlaubt Anfragen von jedem Ursprung. In einer Produktionsumgebung ist es jedoch viel sicherer, bestimmte vertrauenswürdige Domänen mit der Einstellung CORS_ALLOWED_ORIGINS zu definieren. Dieser Ansatz hilft, die Sicherheit zu erhöhen.

Mit dieser Konfiguration kann Ihre React-Anwendung reibungslos mit Ihren Django-APIs interagieren und gleichzeitig die CORS-Anforderungen erfüllen.

Wie kann ich meine Django- und React-Anwendung für den Produktionseinsatz vorbereiten?

Um Ihre Django- und React-Anwendung für die Produktion vorzubereiten, sollten Sie zunächst Ihre Django-Einstellungen für ein sicheres Setup anpassen. Dazu gehört die Einstellung von DEBUG auf False und die Angabe von ALLOWED_HOSTS, um zu kontrollieren, welche Domänen auf Ihre Anwendung zugreifen können. Diese Änderungen sind für den Schutz Ihrer Anwendung in einer Live-Umgebung unerlässlich.

Als nächstes wählen Sie eine zuverlässige Hosting-Plattform für Ihr Django-Backend und Ihre statischen Dateien. Stellen Sie sicher, dass Ihre Infrastruktur für den Datenverkehr und die Anforderungen der Produktionsumgebung ausgelegt ist. Für das React-Frontend verwenden Sie die entsprechenden Build-Tools, um einen optimierten Produktions-Build zu erstellen.

Sobald Ihre React-Anwendung fertig ist, richten Sie einen Webserver wie Nginx ein, der sowohl das React-Frontend als auch das Django-Backend bedient. Die richtige Serverkonfiguration stellt sicher, dass Ihre Anwendung effizient läuft und den Benutzern ein nahtloses Erlebnis bietet.

Testen Sie Ihre Anwendung gründlich in der Produktionsumgebung, bevor Sie sie in Betrieb nehmen. Dieser Schritt hilft bei der Identifizierung und Behebung von Problemen und stellt sicher, dass Ihre Anwendung zuverlässig funktioniert, sobald sie gestartet ist.

Blog

Diese Woche im Blickpunkt

Weitere Artikel
Welche Möglichkeiten gibt es im Jahr 2025, um Ihren Dedicated Server oder VPS zu überwachen?

Welche Möglichkeiten gibt es im Jahr 2025, um Ihren Dedicated Server oder VPS zu überwachen?

Entdecken Sie die besten Monitoring-Tools für dedizierte Server und VPS im Jahr 2025, mit Schwerpunkt auf KI, Automatisierung und Echtzeit-Analysen.

12 Min. Lesezeit - 28. November 2025

So wählen Sie den besten GPU-Server für KI-Arbeitslasten

10 Min. Lesezeit - 15. Oktober 2025

Weitere Artikel
background image

Sie haben Fragen oder benötigen eine individuelle Lösung?

icon

Flexible Optionen

icon

Globale Reichweite

icon

Sofortige Bereitstellung

icon

Flexible Optionen

icon

Globale Reichweite

icon

Sofortige Bereitstellung