Как я могу искать переменные из другого шаблона - PullRequest
0 голосов
/ 18 января 2020

Я нахожусь в шаблоне моей домашней страницы, где у меня есть только окно поиска, похожее на главную страницу поиска Google. Теперь я хочу искать переменные из другого шаблона и отображать его, но ничего не происходит. Ниже мой код

Шаблон домашней страницы

<form action="{% url 'loststuffapp:IndexView' %}" method="GET" value="{{request.GET.q}}" class="navbar-form" role="search" style="margin-left: 25em;">
        <input type="text"placeholder="Search....." name="q">
        <button type="submit" onclick="/Miscellaneous"><i class="fa fa-search"></i></button>
</form>

Вид домашней страницы

def IndexView(request):
    title="Homepage"
    return render(request, "loststuffapp/home.html", {"title":title})

Разный шаблон

<div class="card-body">
  <p><label style="font-size:15px; font-weight: bold;color: black;">Jina la nyaraka:  </label>{{Doc.docs_name}}</p>
    <p><label style="font-size:15px; font-weight: bold;color: black;">Aina ya nyaraka:  </label>{{Doc.item_type}}</p>
    {% if Doc.image %}
 <div class="row">
    <div class="col-md-12">
       <img class="img-fluid" alt="Responsive image" src ="{{Doc.image.url}}" style="display: flex;" />
    </div>
 </div>

    {% endif %}
    <p>{{Doc.date}}</p>
</div>

Разный вид

def Miscellaneous(request):
    query = request.GET.get('q', '')
    qsets=(Q(docs_name__icontains=query)|Q(item_type__icontains=query))
    return render(request, "loststuffapp/Miscellaneous.html", context={"documents":Documents.objects.filter(qsets)})

1 Ответ

0 голосов
/ 18 января 2020

Если я вас правильно понимаю, вы хотите передать параметр q из формы на домашней странице в представление Разное. В настоящее время ваш код просто вызывает ваш IndexView при отправке формы и возвращает ее.

Полагаю, вы ожидаете, что форму отправят в представление Разное, добавив URL-адрес к onclick вашей кнопки. Я не думаю, что это работает так, как onclick ожидает некоторую javascript функцию. Ваша форма отправляется на URL, который вы указали в атрибуте действия вашей формы, и это ваша домашняя страница.

Таким образом, самый простой подход - изменить атрибут действия вашей формы, чтобы он указывал на ваше Разное представление:

<form action="{% url 'loststuffapp:Miscellaneous' %}" method="GET" value="{{request.GET.q}}" class="navbar-form" role="search" style="margin-left: 25em;">
        <input type="text"placeholder="Search....." name="q">
        <button type="submit"><i class="fa fa-search"></i></button>
</form>

Примечание: я не уверен, что вы ожидаете от атрибута значения или от вашей формы

Что вы также можете сделать, это вернуться к вашему IndexView при отправке формы и перенаправлении оттуда к MiscellaneaousView, передавая запрос в качестве аргумента. Однако это не выглядит необходимым из того, что я прочитал из вашего поста.

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