Menu
CoddyTech

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 %}.

challenge icon

Tantangan

Sedang

Buat 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>/ bernama book_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