Menu
CoddyTech

Her Kitap İçin Bir Sayfa

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

Her kitabın kendi adresinde bir sayfası olmalıdır: /books/1/, /books/2/. Django Basics’ten bir yol dönüştürücüsü bu sayıyı yakalar ve görünüme aktarır. Bir yıldaki kitapların sayfası:

path("years/<int:year>/", views.books_of_year, name="books_of_year"),

def books_of_year(request, year):
    books = Book.objects.filter(year=year)
    return render(request, "books/year.html", {"year": year, "books": books})

Tek bir satırın sayfası, satırı birincil anahtarıyla adlandırır: pk; yani id. Olmayan bir satır üzerinde get() çağrısı bir istisna oluşturur ve görünümdeki bir istisna çökmeye neden olur: 500 Sunucu Hatası. django.shortcuts içindeki get_object_or_404() bunun yerine 404 Sayfa bulunamadı yanıtını verir. Önce modeli, ardından koşulları alır: get_object_or_404(Book, title="Emma").

Bir değeri yakalayan bir rotaya bağlantı vermek için değeri addan sonra yazın: {% url 'books:books_of_year' book.year %}.

challenge icon

Görev

Orta

Her kitaba bir sayfa ver. books/book_detail.html şablonu hazır ve book bekliyor.

  1. books/views.py içinde book_detail(request, pk) yaz: Bu işlev, o kimliğe sahip kitabı gösterir veya 404 yanıtı verir.
  2. books/urls.py içinde yalnızca sayılardan oluşan /books/<id>/ yolunu book_detail işlevine yönlendir.
  3. home.html içinde her başlığı kendi sayfasına bağla. Bağlantı yalnızca başlık olsun: <a ...>Dune</a> (1965).

Ana sayfada Dune'a tıkla, ardından /books/999/ adresini aç: Sayfa bulunamadı (404).

Kendin dene

from django.shortcuts import render

from .models import Book


def home(request):
    books = Book.objects.all()
    return render(request, "books/home.html", {"books": books})

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

Kendi başına pratik yap: Django playground