Menu
CoddyTech

Wyszukiwanie książek

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

Na twojej półce potrzebne jest pole wyszukiwania. Strona wyszukiwania odczytuje z adresu to, co wpisał użytkownik. W /search/?q=dune część po ? to ciąg zapytania, a Django umieszcza jego pary w request.GET, które działa jak słownik. Pole wyszukiwania w nagłówku to formularz, który tworzy ten adres za ciebie; formularze są omówione w sekcji Formularze. Strona dla jednego gatunku mogłaby odczytywać 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; w takim przypadku request.GET["genre"] spowodowałoby błąd 500. Wartości są zawsze tekstem: ?page=2 daje "2". Każdy tekst zawiera pusty tekst, więc __icontains="" pasuje do każdego wiersza.

challenge icon

Wyzwanie

Łatwy

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

  • Widok search, który odczytuje q z adresu (pusty tekst, gdy go brakuje) i wyszukuje książki, których tytuł zawiera tę wartość, niezależnie od wielkości liter.
  • Trasa search/ o nazwie search.

Naciśnij Run, wyszukaj dune w nagłówku, a następnie otwórz /search/.

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