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.
Görev
OrtaHer yazara /authors/<id>/ adresinde, author_detail adlı bir sayfa verin.
books/views.pydosyasında,author_detail(request, pk)yazarakbooks/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.author_list.htmldosyasında, her<h2>adını yazarın sayfasına bağlayın.book_detail.htmldosyası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})
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