NoReverseMatch в ...... в django - PullRequest
       0

NoReverseMatch в ...... в django

0 голосов
/ 17 февраля 2020

Я работаю над сайтом блога, где вы можете искать сообщения, используя поиск по ключевым словам (обычно это обычная панель поиска).

Я импортировал Q из django .db.models

Представление, которое я создал:

def search(request):
    queryset = Article.objects.all()
    query =  request.GET.get('q')
    if query:
        queryset = queryset.filter(
            Q(title__icontains=query) |
            Q(overview__icontains=query)
        ).distinct()

    context = {
        'queryset': queryset,
    }
    return render(request, 'search_results.html', context)

urlpattern:

path('search/', search, name='search-results'),

Сама форма:

<form action="{% url 'search' %}" class="search-form">{% csrf_token %}
              <button type="submit" class="submit"><i class="icon-search"></i></button>
                <div class="form-group">
                  <span class="icon icon-search"></span>
                  <input type="text" class="form-control" name="q" placeholder="Type a keyword and hit enter">
                </div>
              </form>

Когда я хочу получить доступ к странице, к которой Я вставил эту форму, там написано: «Обратный поиск» не найден. 'search' не является допустимой функцией представления или именем шаблона.

Ниже также показано это:

1   <!DOCTYPE html>
2   <html lang="en">
3   
4   {% include 'head.html' %}
5   
6   <body>
7       
8       {% include 'header.html' %}
9   
10      {% block content %}

Я попытался добавить / удалить csrf_token и кнопку отправки, но результат всегда одно и то же. Пожалуйста помоги!

Ответы [ 2 ]

4 голосов
/ 17 февраля 2020

Я предполагаю, что форма является частью head.html. Вам не нужно csrf_token, так как это не форма post.

В urlpatterns, измените свою запись в URL:

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

В шаблоне action="{% url 'search' %}" относится к названию URL-адреса ... вы также можете добавить role='search' атрибут к вашей форме. Надеюсь, это поможет

3 голосов
/ 17 февраля 2020

Когда вы используете тег {% url '' %}, он пытается найти URL-адрес на основе URL-имен. Вы должны использовать имена URL внутри него. Пожалуйста, измените {% url 'search' %} на {% url 'search-results' %}

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