Menu
CoddyTech

Eine Autorenseite

Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 23 von 23.

Das letzte Teil: Jeder Autor erhält eine eigene Seite, die überall dort verlinkt ist, wo der Name eines Autors erscheint. Es ist die Buchseite, die du in diesem Abschnitt für ein anderes Modell erstellt hast.

Denk an die drei Einstiege. Ein Besucher auf /authors/ klickt auf einen Namen. Ein Besucher auf der Seite eines Buches klickt auf „von Frank Herbert“. Und jemand gibt die Adresse eines Autors ein, den es nicht gibt, und sollte einen 404-Fehler statt eines Absturzes erhalten.

Erstelle jeden Link mit {% url %} und der ID des Autors, damit die Links urls.py folgen, falls sich diese Datei jemals ändert.

challenge icon

Aufgabe

Mittel

Gib jedem Autor eine Seite unter /authors/<id>/ mit dem Namen author_detail:

  • Der Name des Autors in einem <h1> sowie Links zu seinen Büchern.
  • Eine ID ohne zugehörigen Autor liefert eine 404-Antwort.
  • Unter /authors/ verlinkt jeder Name in seinem <h2> auf die Seite.
  • Auf der Seite eines Buches verlinkt der Name des Autors auf dessen Seite.

Klicke auf „Run“ und dann auf einen Namen unter /authors/.

Probier es selbst

from django.shortcuts import get_object_or_404, render

from .models import Author, Book


def home(request):
    books = Book.objects.select_related("author")
    return render(request, "books/home.html", {"books": books})


def book_detail(request, pk):
    book = get_object_or_404(Book, pk=pk)
    return render(request, "books/book_detail.html", {"book": book})


def search(request):
    q = request.GET.get("q", "")
    books = Book.objects.filter(title__icontains=q).select_related("author")
    return render(request, "books/search.html", {"q": q, "books": books})


def author_list(request):
    authors = Author.objects.prefetch_related("books")
    return render(request, "books/author_list.html", {"authors": authors})
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Modelle und Admin-Bereich

Übe selbstständig: Django-Playground