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

Задание

Легко

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

  1. В event_list.html, перед <ul class="events">, добавь форму с method="get", содержащую поле ввода с именем q и кнопку Search.
  2. В event_list оставь события, в названии которых есть q, не учитывая регистр.
  3. Передай q в шаблон для атрибута value поля ввода, чтобы поисковый запрос Meetup оставался в поле.

Выполни поиск по слову «джаз»: останется только Friday Jazz Night, а в поле по-прежнему будет указано «джаз».

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

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