Menu
CoddyTech

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ış.

challenge icon

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.html dosyasındaki başlık, sayfaya Authors olarak 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