Mencari Buku
Termasuk bagian Model dan Admin dalam perjalanan Django di Coddy. Pelajaran 15 dari 23.
Rak bukumu memerlukan kotak pencarian. Halaman pencarian membaca apa yang diketik pengunjung dari alamat. Dalam /search/?q=dune, bagian setelah ? adalah query string, dan Django menempatkan pasangan nilainya di request.GET, yang berfungsi seperti dictionary. Kotak pencarian di header adalah formulir yang menyusun alamat ini untukmu; bagian Formulir membahas formulir. Halaman untuk satu genre dapat membacanya seperti ini:
def by_genre(request):
genre = request.GET.get("genre", "fiction")
books = Book.objects.filter(genre=genre)
return render(request, "books/genre.html", {"genre": genre, "books": books}).get("genre", "fiction") mengembalikan nilai default saat alamat tidak memiliki genre; request.GET["genre"] akan memunculkan error di sana, yaitu error 500. Nilai selalu berupa teks: ?page=2 menghasilkan "2". Setiap teks memuat teks kosong, jadi __icontains="" cocok dengan setiap baris.
Tantangan
MudahTambahkan halaman pencarian. Template books/search.html sudah siap dan memerlukan q dan books.
- Sebuah view
searchyang membacaqdari alamat (teks kosong jika tidak ada) dan menemukan buku yang judulnya mengandung teks tersebut, tanpa membedakan huruf besar dan kecil. - Rute
search/, dengan namasearch.
Tekan Jalankan, cari dune di header, lalu buka /search/.
Coba sendiri
from django.shortcuts import get_object_or_404, render
from .models import Book
def home(request):
books = Book.objects.all()
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})
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Model dan Admin
Latihan sendiri: Playground Django