Как реализовать кнопку панели поиска, стирающую запрос?Джанго среда) - PullRequest
0 голосов
/ 20 сентября 2019

Я разрабатываю веб-приложение в Django.
Я разработал красивую панель поиска с двумя кнопками.

Одна из них (fa fa-search) - это поиск и отображение результатов базы данных,и это работает отлично.

Мне бы хотелось, чтобы, когда мой пользователь нажимал на другой (fa fa-trash), код стирал запрос и перезагружал все нефильтрованные результаты.

Как это сделать?Вот мой код:

в views.py :

def glossario(request):

    query = request.GET.get('q') 
    template = "glossario.html" 

    # query apply
    if query:

        query = request.GET.get('q') #q è variabile risultante dalla query del database
        selected_entries = glossary_entry.objects.filter(Q(Lemma_it__icontains=query))

        return render(request, template, {'all_entries':selected_entries})

    # no query
    else:

        all_entries = glossary_entry.objects.all 
        return render(request, template, {'all_entries':all_entries})

в glossario.html:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> 

<div class="topnav">

    <a id="pulsante_ricerca_avanzata" href="#Ricerca_avanzata">Ricerca avanzata</a>

    <div id="blocco_ricerca_semplice" class="search-container">

      <form method="GET" action="{% url 'glossario' %}">

        <input type="text" placeholder="Ricerca terminologia..." name="q" value="{{request.GET.q}}">  
        <button id="cancel_search_button" type=""><i class="fa fa-trash"></i></button>

        <button id="search_button" type="submit"><i class="fa fa-search"></i></button>

      </form>

    </div>

</div>

1 Ответ

0 голосов
/ 20 сентября 2019

Я решил это, реализовав функцию Javascript, стирающую текст внутри окна поиска, как только нажата кнопка «Корзина», а затем кнопка выполняет запрос (с аргументом void).

в глоссарии.html :

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <!-- questo fa apparire il pulsantino di ricerca -->
<!-- questo fa apparire il pulsantino di ricerca -->

<div class="topnav">

    <a id="pulsante_ricerca_avanzata" href="#Ricerca_avanzata">Ricerca avanzata</a>

    <div id="blocco_ricerca_semplice" class="search-container">

      <form method="GET" action="{% url 'glossario' %}">

        <input id="testo_slot_ricerca_semplice" type="text" placeholder="Ricerca terminologia..." name="q" value="{{request.GET.q}}">  <!-- è il nome che ho dato anche nella views.py -->
        <!-- name dentro input text vuol dire il sintagma che viene dato all'url di tutte le query, seguito da un = per indicarne il bersaglio'  -->

        <button id="cancel_search_button" onclick="Delete_simple_search()"><i class="fa fa-trash"></i></button>


        <button id="search_button" type="submit"><i class="fa fa-search"></i></button>

      </form>

<!--at the end of the page-->

{% load static %}

<script type="text/javascript" src={% static "js/Delete_simple_search.js" %}></script>

В delete_simple_search.js , по пути static / js / delete_simple_search.js :

function Delete_simple_search() {

    document.getElementById("testo_slot_ricerca_semplice").value="";
}

Кто-нибудь знает, есть ли более эффективный способ стереть запрос?

...