Menu
CoddyTech

Une page d’auteur

Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 23 sur 23.

Dernière étape : chaque auteur a sa propre page, accessible depuis chaque endroit où son nom apparaît. C’est la page du livre que vous avez créée dans cette section, mais pour un autre modèle.

Pensez aux trois façons d’y accéder. Un visiteur sur /authors/ clique sur un nom. Un visiteur sur la page d’un livre clique sur « par Frank Herbert ». Et quelqu’un saisit l’adresse d’un auteur qui n’existe pas : il doit obtenir une erreur 404, et non provoquer un plantage.

Créez chaque lien avec {% url %} et l’identifiant de l’auteur, afin que les liens suivent urls.py si ce fichier venait à changer.

challenge icon

Défi

Moyen

Donnez à chaque auteur une page à l’adresse /authors/<id>/ nommée author_detail :

  • Le nom de l’auteur dans un <h1>, ainsi que des liens vers ses livres.
  • Un identifiant sans auteur renvoie une erreur 404.
  • Sur /authors/, le nom de chaque auteur dans son <h2> renvoie vers sa page.
  • Sur la page d’un livre, le nom de l’auteur renvoie vers sa page.

Cliquez sur Exécuter, puis sur un nom dans /authors/.

Essayez vous-même

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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Modèles et interface d’administration

Entraînez-vous par vous-même : Playground Django