Menu
CoddyTech

Форма поиска

Часть раздела Формы путешествия по Django на Coddy. Урок 1 из 20.

Посетители пока не могут искать события на доске. Форма — это набор полей и кнопка, которая отправляет введённые данные на URL.

Форма, которая только читает данные, использует method="get": браузер добавляет каждое поле в строку запроса URL в виде name=value. Фильтр размера на странице магазина:

<form method="get">
    <select name="size">
        <option value="S">Small</option>
        <option value="L">Large</option>
    </select>
    <button type="submit">Show</button>
</form>

При выборе Large открывается /products/?size=L. Атрибут name поля служит ключом, поэтому представление читает его так же, как любую строку запроса: request.GET.get("size", ""), задавая значение по умолчанию для обычной страницы.

После поиска страница перезагружается, и поле снова становится пустым. Чтобы сохранить в нём введённые слова, передайте их обратно в шаблон и укажите в атрибуте value поля ввода.

challenge icon

Задание

Легко

Добавьте поиск на главную страницу:

  • Над списком в event_list.html разместите форму, которая передаёт своё поле в URL: поле ввода с именем q и кнопку Search.
  • В event_list показывайте только те мероприятия, в названии которых содержится q, без учёта регистра.
  • В поле поиска остаётся введённый запрос.

Нажмите «Run» и выполните поиск по запросу jazz.

Попробуйте сами

from django.shortcuts import get_object_or_404, render

from .models import Event


def event_list(request):
    events = Event.objects.all()
    return render(request, "events/event_list.html", {"events": events})


def event_detail(request, pk):
    event = get_object_or_404(Event, pk=pk)
    return render(request, "events/event_detail.html", {"event": event})

Все уроки раздела Формы

Потренируйтесь самостоятельно: Песочница Django