Game Review Website

Von Moritz Leopold

Erstellt am 19. January 2025


Hauptseite der Review Website.

Hauptseite der Review Website.

Einzelprojekt – Webanwendung mit Django

Diese selbst entwickelte Spiele-Review-Plattform ermöglicht es Nutzer:innen, Spiele anzulegen, zu bewerten und Reviews zu veröffentlichen. Die gesamte Entwicklung – von der Konzeption bis zur Umsetzung – erfolgte in Eigenregie.

Ziel war es, eine benutzerfreundliche, optisch ansprechende Plattform zu schaffen, die Spielbegeisterten ermöglicht, Meinungen auszutauschen und ihre Lieblingsspiele zu präsentieren.


🔹 Kernfunktionen

👤

Benutzerkonten

Registrierung, Login & persönliches Dashboard für jede:n Nutzer:in.

🎮

Spiele-Übersicht

Durchsuchbare Übersicht aller Games mit Bewertung und Reviews.

📝

Review-System

User können eigene Spiele-Reviews samt Bewertung & Avatar veröffentlichen.


🔹 Tech Stack & Tools

  • Backend: Django
  • Frontend: HTML/CSS mit Template-Anpassungen
  • Datenbank: SQLite
  • Entwicklungsumgebung: PyCharm
  • Zusätzliche Tools:
    • Pillow (Bildverarbeitung)
    • django-gravatar2 (Avatare via E-Mail)

🔹 Datenbankmodell

Die Website basiert auf einem relationalen Schema mit drei Hauptmodellen:

  • User: Django-Standardauthentifizierung
  • Review: Bezug zu Spiel und User, Bewertung, Bewertungstext, Timestamp
  • Game: Titel, Beschreibung, Entwickler, Bild, durchschnittliche Bewertung
Vereinfachte Datenbankstruktur: Beziehungen zwischen Spielen, Nutzern und Reviews.

Vereinfachte Datenbankstruktur: Beziehungen zwischen Spielen, Nutzern und Reviews.


🔹 Codebeispiel (Upload-View)

from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect, get_object_or_404
from .forms import ReviewForm
from .models import Game


@login_required()
def upload_review(request):
    game_id = request.GET.get('game_id')
    game = get_object_or_404(Game, id=game_id) if game_id else None

    if request.method == 'POST':
        form = ReviewForm(request.POST, request.FILES)
        if form.is_valid():
            review = form.save(commit=False)
            review.user_id = request.user.id
            review.save()

            calculate_and_update_average_rating(review.game)

            return redirect('game-reviews', review.game_id)
    else:
        form = ReviewForm(initial=dict(game=game))
    return render(request, 'upload_review.html', dict(upload_review=form))

Diese View steuert das Verhalten des Review Upload und verwendet dabei ein eigenes Template – ein Beispiel für die modulare Anpassbarkeit von Django.


🔹 Herausforderungen & Lösungen

  • Styling von Formularen: Django-Forms mussten mit viel manuellem CSS und Template-Overrides angepasst werden, um das gewünschte Layout zu erzielen.
  • Gravatar-Integration: Avatar-Bilder per E-Mail abrufen und sinnvoll im Layout darstellen – gelöst durch gezielte Layout-Anpassung und Nutzung von django-gravatar2.

💬 Fazit & Ausblick

Die Entwicklung war ein wertvoller Lernprozess, besonders im Umgang mit Django, Template-Anpassung und relationalem Datenbankdesign. Die Seite erfüllt alle gestellten Anforderungen und bietet eine saubere Basis für weitere Features wie:

  • Bewertungssystem für Reviews
  • Filter- & Suchfunktionen
  • REST-API für externe Tools
Detailseite eines Spiels mit eingebundenen Reviews und Nutzer-Avataren.

Detailseite eines Spiels mit eingebundenen Reviews und Nutzer-Avataren.