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 %}.
Görev
OrtaHer kitaba bir sayfa ver. books/book_detail.html şablonu hazır ve book bekliyor.
books/views.pyiçindebook_detail(request, pk)yaz: Bu işlev, o kimliğe sahip kitabı gösterir veya 404 yanıtı verir.books/urls.pyiçinde yalnızca sayılardan oluşan/books/<id>/yolunubook_detailişlevine yönlendir.home.htmliç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