Menu
CoddyTech

Bir Yazar Sayfası

Coddy'nin Django Journey'sinin Modeller ve Yönetim Paneli bölümünün bir parçası. Ders 23 / 23.

Son parça: Her yazarın kendine ait bir sayfası olacak ve yazarın adı nerede görünürse görünsün bu sayfaya bağlantı verilecek. Bu bölümde başka bir model için oluşturduğun kitap sayfasının benzeri.

Sayfaya ulaşmanın üç yolunu düşün. /authors/ sayfasındaki bir ziyaretçi bir ada tıklar. Bir kitabın sayfasındaki ziyaretçi “Frank Herbert tarafından” ifadesine tıklar. Bir başkası ise var olmayan bir yazarın adresini yazar; hata ekranı yerine 404 almalıdır.

Tüm bağlantıları {% url %} ve yazarın kimliğiyle oluştur; böylece urls.py değişirse bağlantılar da değişikliği izler.

challenge icon

Görev

Orta

Her yazara /authors/<id>/ adresinde, author_detail adlı bir sayfa verin.

  1. books/views.py dosyasında, author_detail(request, pk) yazarak books/author_detail.html şablonunu görüntüleyin: adı bir <h1> içinde, her kitaba bir bağlantı ve bilinmeyen bir id için 404. Rotasını ekleyin.
  2. author_list.html dosyasında, her <h2> adını yazarın sayfasına bağlayın.
  3. book_detail.html dosyasında yalnızca yazarın adını bağlantı yapın: by <a href="/authors/1/">Frank Herbert</a>.

/authors/ adresinde Frank Herbert'e tıklayın: sayfasında Children of Dune ve Dune kitaplarına bağlantılar bulunur.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Modeller ve Yönetim Paneli bölümündeki tüm dersler

Kendi başına pratik yap: Django playground