Halaman untuk Setiap Buku
Termasuk bagian Model dan Admin dalam perjalanan Django di Coddy. Pelajaran 14 dari 23.
Setiap buku memerlukan halaman dengan alamatnya sendiri: /books/1/, /books/2/. Path converter dari Django Basics menangkap angka itu dan meneruskannya ke view. Halaman buku dari satu tahun:
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})Halaman untuk satu baris menggunakan primary key-nya sebagai nama, pk: yaitu id-nya. get() akan memunculkan exception jika baris tidak ditemukan, dan exception di dalam view menyebabkan crash, 500 Server Error. get_object_or_404() dari django.shortcuts akan menampilkan 404 Page not found. Fungsi ini menerima model, lalu kondisinya: get_object_or_404(Book, title="Emma").
Untuk membuat tautan ke route yang menangkap nilai, letakkan nilainya setelah nama: {% url 'books:books_of_year' book.year %}.
Tantangan
SedangBuat halaman untuk setiap buku. Template books/book_detail.html sudah siap dan mengharapkan book.
- Sebuah view
book_detail(request, pk). Jika id tidak memiliki buku, hasilnya 404. - Sebuah rute untuk
/books/<id>/bernamabook_detail, yang hanya cocok dengan angka. - Di halaman beranda, setiap judul tertaut ke halamannya.
Tekan Jalankan, klik sebuah judul, lalu buka /books/999/.
Coba sendiri
from django.shortcuts import render
from .models import Book
def home(request):
books = Book.objects.all()
return render(request, "books/home.html", {"books": books})
Semua pelajaran di Model dan Admin
Latihan sendiri: Playground Django