Menu
CoddyTech

Wyszukiwanie książek

Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 15 z 23.

Twoja półka potrzebuje pola wyszukiwania. Strona wyszukiwania odczytuje z adresu to, co wpisał odwiedzający. W /search/?q=dune część po ? to ciąg zapytania, a Django umieszcza jego pary w request.GET, który działa jak słownik. Pole wyszukiwania w nagłówku to formularz, który tworzy ten adres za Ciebie; sekcja Formularze omawia formularze. Strona dla jednego gatunku mogłaby odczytać go w ten sposób:

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") zwraca wartość domyślną, gdy adres nie zawiera genre; request.GET["genre"] spowodowałoby tam błąd 500. Wartości są zawsze tekstem: ?page=2 daje "2". Każdy tytuł zawiera pusty ciąg "", więc __icontains="" pasuje do każdego wiersza.

challenge icon

Wyzwanie

Łatwy

Dodaj stronę wyszukiwania. Szablon books/search.html jest gotowy i oczekuje q oraz books.

  1. W pliku books/views.py napisz widok search, który odczytuje q z adresu (gdy brakuje tej wartości, używa pustego tekstu) i wyszukuje książki, których tytuł zawiera tę wartość, bez względu na wielkość liter.
  2. W pliku books/urls.py dodaj ścieżkę search/ o nazwie search.

Naciśnij „Uruchom” i wyszukaj dune w nagłówku: wyniki wyszukiwania dla "dune" wyświetlą Dune, a xyz pokaże komunikat „Brak pasujących książek”.

Spróbuj swoich sił

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})
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Modele i panel administracyjny

Poćwicz samodzielnie: Edytor online Django