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.
Sfida
MedioAssegna 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})
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