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.
Stellen Sie sicher, dass die notwendigen Softwarekomponenten installiert sind:
Beginnen Sie damit, ein neues Django-Projekt zu initiieren und eine neue App zu erstellen, in der Sie Ihre Portfolio-Daten verwalten.
Ö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.
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.
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.
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.
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.
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.
Organisieren Sie Ihre App in sinnvolle Komponenten, wie zum Beispiel:
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
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.
Sobald das Projekt lokal getestet wurde, ist es an der Zeit, das Backend in Produktion zu bringen. Mögliche Hosting-Optionen umfassen:
Achten Sie darauf, eine Produktionsdatenbank (wie PostgreSQL) zu verwenden und alle sicherheitsrelevanten Einstellungen vorzunehmen.
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.
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 |
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.
Sorgen Sie für die Sicherheit Ihrer Anwendung, indem Sie:
Performance-Tipps beinhalten zudem das Caching häufiger API-Abfragen und die Optimierung von Medieninhalten.
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.
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 |