Конфигурация формы поиска Django - PullRequest
0 голосов
/ 05 июня 2019

Я реализую функцию поиска.Я могу заставить его работать нормально, если я просто выполняю поиск «if» в каждом представлении и отображаю его на каждой странице, но я знаю, что есть лучший способ.Я хочу, чтобы кнопка отправки поиска отображала страницу результатов.Я вижу запрос поиска в URL, но почему моя функция поиска не вызывается?

Я попытался переместить атрибут 'action' из класса формы в класс кнопки в класс управления формой.Я попытался заменить атрибут действия атрибутом href.Кажется, он не запускает мою функцию.

path('results/', views.search, name='search'),


def search(request):
print('here!')
eqs = Equipment.objects.all()
locs = Location.objects.all()
if 'search' in request.GET:
    search_term = self.request.GET['search']
#    searching = Equipment.objects.filter(name__icontains=search_term)
    searching = sorted(
        chain(eqs, locs)
    )
    context['search_term'] = search_term
    context['searching'] = searching
return render(
    request,
    'results.html',
    context = {
        'search_term': search_term,
        'searching': searchin,
    }
    )


<form class="form-inline my-2 my-lg-0" action="{% url 'search' %}">
    <input class="form-control mr-sm-2"
           type="search"
           placeholder="Search"
           aria-label="Search"
           name="search">
    <button class="btn btn-outline-success my-2 my-sm-0 search-button"   role="button" type="submit">Search</button>
  </form>'''

Я не получаю никаких ошибок, поле поиска фиксируется, но я просто остаюсь на странице, а функция не запускается.

1 Ответ

1 голос
/ 05 июня 2019

Ваша форма отправляет POST, а затем вы пытаетесь получить значение из request.GET в вашем представлении.Вам необходимо добавить method="GET" к вашей форме.

Подробнее о данных формы можно узнать по адресу: https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data#The_GET_method

Подробнее об обработке запросов в Django можно узнать по адресу: https://docs.djangoproject.com/en/2.2/ref/request-response/#httprequest-objects

РЕДАКТИРОВАТЬ: После прочтения вашего вопроса и просмотра вашего кода.Это происходит из-за наличия role="button" в вашей кнопке отправки.Измени это, и ты должен идти.Этот вопрос содержит дополнительную информацию: Нужна ли мне role = "button" для

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...