Yazarlar Sayfası
Coddy'nin Django Journey'sinin Modeller ve Yönetim Paneli bölümünün bir parçası. Ders 22 / 23.
Kitaplığınızda her kitap için bir sayfa var ama yazarlar için yok. Bu proje, bildiklerinizden yola çıkarak bir tane oluşturuyor: veritabanını sorgulayan bir görünüm, bir URL, ilişkileri izleyen bir şablon ve satır başına sorgu çalıştırmayan bir QuerySet.
Her yazar kitaplarıyla birlikte listelenir: yazarlar üzerinde bir döngü ve bunun içinde her yazarın kitapları üzerinde bir döngü. Yardım olmadan iç döngü, yazar başına bir sorgu çalıştırır. select_related() yardımcı olamaz; çünkü yazardan kitaplarına gitmek ters yöndedir. Eşi olan prefetch_related() ise listedeki her nesnenin ilişkili satırlarını tek bir ek sorguyla getirir.
Görev, sayfanın ne yapması gerektiğini söyler; kod size kalmış.
Görev
Orta/authors/ adresinde, URL adı authors olan bir Yazarlar sayfası oluşturun:
- Her yazar için, adının bir
<h2>içinde yer aldığı ve kitaplarının her birine bağlantılar içeren bir<section class="author">oluşturun. - Yazar sayısı ne olursa olsun, sayfa aynı birkaç sorguyu çalıştırır.
books/base.htmldosyasındaki başlık, sayfayaAuthorsolarak bağlantı verir.
Run'a basın ve Authors'a tıklayın.
Kendin dene
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})
Modeller ve Yönetim Paneli bölümündeki tüm dersler
Kendi başına pratik yap: Django playground