Chat
Ask me anything
Ithy Logo

Portfolio mit Django und React

Ein umfassender Leitfaden zur Entwicklung einer modernen Kombination aus Backend und Frontend

scenery of computers and tech devices

Wichtige Highlights

  • Robuste Architektur: Klare Trennung von Backend (Django) und Frontend (React) für einfache Wartung und Skalierung.
  • Schnelle Entwicklungszyklen: Nutzung moderner Tools wie Django REST Framework und Create React App erleichtert den Aufbau
  • Interaktive Benutzererfahrung: Dynamisches Laden von Inhalten und reibungslose API-Integration

Einführung

Die Erstellung einer Portfolio-Seite mit Django als Backend und React als Frontend ermöglicht es, beide Technologien optimal zu nutzen: Django bietet eine robuste, gut strukturierte Serverlogik sowie den Zugriff auf eine vollständige Datenbankverwaltung, während React als modernes JavaScript-Framework eine reaktive und responsive Oberfläche darstellt. Diese Kombination trennt die Datenlogik vom Präsentationslayer, was nicht nur die Skalierbarkeit, sondern auch Wartbarkeit und Weiterentwicklung erleichtert.


Schritt-für-Schritt Anleitung

1. Entwicklungsumgebung einrichten

Systemvoraussetzungen

Stellen Sie sicher, dass die notwendigen Softwarekomponenten installiert sind:

  • Python (zum Ausführen von Django)
  • Node.js und npm (für die Erstellung und Verwaltung des React-Projekts)
  • Virtual Environment (optional, aber empfohlen für Python-Projekte)

Beginnen Sie damit, ein neues Django-Projekt zu initiieren und eine neue App zu erstellen, in der Sie Ihre Portfolio-Daten verwalten.

Initialisierung des Django-Backends

Öffnen Sie Ihr Terminal und führen Sie folgende Befehle aus:


# Neues Django-Projekt erstellen
django-admin startproject portfolio_backend

# In das Projektverzeichnis wechseln
cd portfolio_backend

# Portfolio App erstellen
python manage.py startapp portfolio
  

Der Befehl django-admin startproject erstellt die Grundstruktur. Die App portfolio enthält den Code, der Ihre Portfolio-Einträge, Projekte und weitere Daten abbildet.

2. Django Backend konfigurieren

Modelle und Datenstruktur

Definieren Sie in portfolio/models.py die notwendigen Modelle. Beispielsweise könnten Sie ein Modell für Portfolio-Einträge definieren:


# portfolio/models.py
from django.db import models

class PortfolioEntry(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField()
    image = models.ImageField(upload_to='uploads/')
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
  

Dieses Modell enthält grundlegende Felder: einen Titel, eine Beschreibung, ein Bild und ein Erstellungsdatum.

Erstellen von Serialisierungen

Um Ihre Modelle als JSON zu liefern, nutzen Sie das Django REST Framework. Erstellen Sie in portfolio/serializers.py die Serialisierer:


# portfolio/serializers.py
from rest_framework import serializers
from .models import PortfolioEntry

class PortfolioEntrySerializer(serializers.ModelSerializer):
    class Meta:
        model = PortfolioEntry
        fields = '__all__'
  

Durch die Verwendung von ModelSerializer erhalten Sie eine automatische Erzeugung aller benötigten Felder.

API-Endpunkte konfigurieren

Erstellen Sie in portfolio/views.py API-Views, um Portfolio-Einträge bereitzustellen:


# portfolio/views.py
from rest_framework import generics
from .models import PortfolioEntry
from .serializers import PortfolioEntrySerializer

class PortfolioEntryList(generics.ListCreateAPIView):
    queryset = PortfolioEntry.objects.all()
    serializer_class = PortfolioEntrySerializer
  

In portfolio/urls.py binden Sie dann diesen View an entsprechende Endpunkte:


# portfolio/urls.py
from django.urls import path
from .views import PortfolioEntryList

urlpatterns = [
    path('entries/', PortfolioEntryList.as_view(), name='portfolio_entries'),
]
  

Vergessen Sie nicht, in der Hauptdatei portfolio_backend/urls.py die App-URLs einzubinden:


# portfolio_backend/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('portfolio.urls')),
]
  

Für den Zugriff von Ihrer React-Anwendung aus müssen Sie evtl. CORS konfigurieren. Installieren Sie dazu django-cors-headers und fügen Sie es zu Ihren Django Middleware-Einstellungen hinzu.

3. React Frontend erstellen und konfigurieren

React-Projekt initialisieren

Erstellen Sie ein neues React-Projekt mittels create-react-app:


# Im gewünschten Verzeichnis:
npx create-react-app portfolio_frontend

# In das Frontend-Projektverzeichnis wechseln
cd portfolio_frontend
  

Sobald das Projekt erstellt wurde, können Sie beginnen, Komponenten zu erstellen, um Ihre Portfolio-Inhalte darzustellen.

Daten von Django abrufen

Verwenden Sie Bibliotheken wie Axios oder die native fetch-API, um Ihre Daten vom Django-Backend abzurufen. Hier ein Beispiel mit Axios in einer React-Komponente:


/* src/components/Portfolio.js */
import React, { useState, useEffect } from 'react';
import axios from 'axios';

function Portfolio() {
  const [entries, setEntries] = useState([]);

  useEffect(() => {
    axios.get('http://localhost:8000/api/entries/')
      .then(response => {
        setEntries(response.data);
      })
      .catch(error => {
        console.error('Fehler beim Abrufen der Daten:', error);
      });
  }, []);

  return (
    <div>
      {entries.map(entry => (
        <div key={entry.id}>
          <h2>{entry.title}</h2>
          <p>{entry.description}</p>
          {entry.image && <img src={entry.image} alt={entry.title} style={{ maxWidth: '300px' }} />}
        </div>
      ))}
    </div>
  );
}

export default Portfolio;
  

Diese Komponente holt sich die Portfolio-Einträge vom Django-API-Endpunkt und rendert sie dynamisch.

Frontend-Struktur und Komponenten

Organisieren Sie Ihre App in sinnvolle Komponenten, wie zum Beispiel:

  • About: Kurze Biografie und persönliche Infos
  • Projects: Detaillierte Übersicht der Projekte mit Beschreibungen und Bildern
  • Skills: Darstellung der technischen Fähigkeiten
  • Kontakt: Formular für Anfragen

4. Integration von Frontend und Backend

Schnittstellen und CORS

Damit Ihre React-Anwendung problemlos auf die Django-API zugreifen kann, müssen Sie CORS (Cross-Origin Resource Sharing) konfigurieren. Dies gewährleistet, dass Anfragen von Ihrem React-Frontend, das möglicherweise auf einem anderen Port läuft (z. B. Port 3000), akzeptiert werden.

Fügen Sie in Ihrer Django-Installation django-cors-headers hinzu und passen Sie die Middleware-Konfiguration an:


# settings.py
INSTALLED_APPS = [
    ...,
    'corsheaders',
    'rest_framework',
    'portfolio',
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...,
]

CORS_ORIGIN_ALLOW_ALL = True  # Oder konfigurieren Sie spezifische Origins
  

Statische Dateien bereitstellen

Für ein konsistentes Deployment können Sie Django so konfigurieren, dass es statische Dateien des React-Builds bereitstellt. Erstellen Sie hierzu einen Produktionsbuild Ihrer React-Anwendung:


npm run build
  

Anschließend können Sie diesen Build in Django einbinden, indem Sie die statischen Dateien konfigurieren. Das vereinfacht das Hosting, da sowohl Frontend als auch Backend auf demselben Server laufen können.

5. Deployment

Backend Deployment

Sobald das Projekt lokal getestet wurde, ist es an der Zeit, das Backend in Produktion zu bringen. Mögliche Hosting-Optionen umfassen:

  • Heroku
  • AWS (Amazon Web Services)
  • DigitalOcean
  • PythonAnywhere

Achten Sie darauf, eine Produktionsdatenbank (wie PostgreSQL) zu verwenden und alle sicherheitsrelevanten Einstellungen vorzunehmen.

Frontend Deployment

Für das React-Frontend eignen sich Plattformen wie Netlify oder Vercel, die einen einfachen und schnellen Deployment-Prozess ermöglichen. Alternativ können Sie den gebauten React-Code mit Django ausliefern, wie oben beschrieben.


Vergleichstabelle: Django und React Setup

Aspekt Django (Backend) React (Frontend)
Initialisierung django-admin startproject & python manage.py startapp npx create-react-app
API Django REST Framework, Serialisierer, Views Axios oder fetch für API-Aufrufe
Datenmodell Modelle in models.py Komponenten-Status und Props
Deployment Heroku, AWS, DigitalOcean Netlify, Vercel, Hosting via Django
Sicherheit Django-eigene Sicherheitsfeatures, CORS HTTPS, sichere API-Aufrufe

Weitere Best Practices und Tipps

Projektstruktur optimieren

Halten Sie eine klare Trennung zwischen verschiedenen Komponenten Ihrer Anwendung. Im Django-Backend sollten API-spezifische Module, Models, Serialisierer und Views sauber voneinander separiert werden. Ebenso sollten Sie im React-Frontend Ihre Komponenten in Ordnern wie components, services und assets organisieren. Dies erleichtert zukünftige Erweiterungen und Anpassungen.

Sicherheit und Performance

Sorgen Sie für die Sicherheit Ihrer Anwendung, indem Sie:

  • Die Django-Admin-Oberfläche schützen
  • HTTPS und sichere Authentifizierungsmechanismen implementieren
  • CORS sorgfältig konfigurieren
  • Regelmäßig Sicherheitsupdates durchführen

Performance-Tipps beinhalten zudem das Caching häufiger API-Abfragen und die Optimierung von Medieninhalten.

Testing und Dokumentation

Tests spielen eine entscheidende Rolle in jeder Produktion. Nutzen Sie Django-Tests, um die API-Endpunkte zu überprüfen, und setzen Sie React-Testbibliotheken wie Jest oder React Testing Library ein, um die Funktionalität Ihrer Komponenten sicherzustellen. Eine gut strukturierte Dokumentation hilft nicht nur Ihnen selbst, sondern auch anderen Entwicklern, die an Ihrem Projekt mitarbeiten möchten. Tools wie Postman können Ihnen helfen, API-Endpunkte zu dokumentieren, während README-Dateien und Wiki-Seiten im Repository eine zentrale Rolle spielen.


Zusammenfassung der Schritte

Schritt Beschreibung
Umgebung Setup Installation von Python, Node.js, und Einrichtung von Virtual Environments
Django Backend Projektstart, App-Erstellung, Modell-Definition, Serialisierer und API-Views implementieren
React Frontend Projektinitialisierung, Erstellung von Komponenten, Integration der API-Aufrufe
Integration CORS-Konfiguration, Verbindung über Axios/fetch, Bereitstellung von statischen Dateien
Deployment Verwendung von Hosting-Diensten wie Heroku, Netlify, AWS für Produktionsbereitstellung

Verweise

Empfohlene Weiterführende Themen


Last updated March 5, 2025
Ask Ithy AI
Download Article
Delete Article