Halaman Penulis
Termasuk bagian Model dan Admin dalam perjalanan Django di Coddy. Pelajaran 22 dari 23.
Rak bukumu memiliki satu halaman untuk setiap buku, tetapi tidak ada halaman untuk penulis. Proyek ini membuatnya berdasarkan pengetahuanmu: sebuah view yang melakukan query ke database, URL, template yang mengikuti relasi, dan QuerySet yang tidak menjalankan query untuk setiap baris.
Setiap penulis ditampilkan bersama buku-bukunya: sebuah perulangan untuk penulis, lalu di dalamnya ada perulangan untuk buku setiap penulis. Tanpa bantuan, perulangan di dalamnya menjalankan satu query untuk setiap penulis. select_related() tidak dapat membantu, karena relasi dari penulis ke buku mengarah ke belakang. Pasangannya, prefetch_related(), mengambil baris terkait dari setiap object dalam daftar dengan satu query tambahan.
Tugasnya menjelaskan apa yang harus dilakukan halaman tersebut; kodenya kamu yang buat.
Tantangan
SedangBuat halaman Penulis di /authors/, dengan nama URL authors:
- Setiap penulis memiliki
<section class="author">dengan namanya di dalam<h2>dan tautan ke setiap bukunya. - Halaman ini menjalankan jumlah query yang sama, berapa pun jumlah penulisnya.
- Header di
books/base.htmlmenautkan ke halaman ini dengan teksAuthors.
Tekan Jalankan, lalu klik Authors.
Coba sendiri
from django.shortcuts import get_object_or_404, render
from .models import 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})
Semua pelajaran di Model dan Admin
Latihan sendiri: Playground Django