Menu
CoddyTech

Una pagina di autore

Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 23 di 23.

L’ultimo tassello: ogni autore ha una pagina tutta sua, raggiungibile da ogni punto in cui compare il nome dell’autore. È la pagina del libro che hai creato in questa sezione, per un altro modello.

Pensa ai tre modi per arrivarci. Un visitatore su /authors/ fa clic su un nome. Un visitatore sulla pagina di un libro fa clic su «by Frank Herbert». E qualcuno digita l’indirizzo di un autore che non esiste e dovrebbe ricevere un 404, non causare un arresto anomalo.

Crea ogni link con {% url %} e l’id dell’autore, così i link seguiranno urls.py se dovesse cambiare.

challenge icon

Sfida

Medio

Assegna a ogni autore una pagina all'indirizzo /authors/<id>/ chiamata author_detail:

  • Il nome dell'autore in un <h1> e link ai suoi libri.
  • Un id senza autore restituisce 404.
  • Su /authors/, il nome di ogni autore nel proprio <h2> rimanda alla pagina.
  • Nella pagina di un libro, il nome dell'autore rimanda alla sua pagina.

Premi Run e fai clic su un nome in /authors/.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Modelli e pannello di amministrazione

Esercitati da solo: Playground Django