Моя поисковая коробка с ajax не работает в Django - PullRequest
0 голосов
/ 27 апреля 2019

Я занимаюсь разработкой проекта с django, интернет-магазином. И я хочу реализовать окно поиска для поиска продуктов на нем.

Я разработал с ajax, но в данный момент я ищу продукт. Он показывает мне все продукты, которые у меня есть, а не только продукт, который я хочу.

Это мой вид для панели поиска:

def searchBar(request, option):

    busqueda = request.POST.get('busqueda', '')
    categoria = Clasificacion.objects.filter(existencia=True)
    items = Articulo.objects.filter(nombre_producto__icontains = busqueda)
    contexto = {
        'items':items,
        'categoria':categoria,
    }
    return render(request, 'adminview/article.html', contexto)

это HTML-код с формой, вызывающей представление:

<form action="{% url 'adminview:searchBar' option=1 %}" method="get" class="d-none d-sm-inline-block form-inline mr-auto ml-md-0 my-2 my-md-20 navbar-search">
            <div class="input-group">
              <input type="text" id="busqueda" class="form-control bg-light border-1 small" placeholder="Buscar producto..." aria-label="Search" aria-describedby="basic-addon2" name="busqueda">
              <div class="input-group-append">
                <button class="btn btn-primary" type="submit">
                  <img src="{% static 'img/search.png'%}"width="20px" height="20px" />
                </button>
              </div>
            </div>
          </form>
   ...
   <script src="{% static 'js/search.js'%}"></script>

Мои URL:

url(r'^search/ajax(?P<option>\d+)/$', searchBar, name="searchBar"),
url(r'^buscar/searchAjax/$', searchBar),

И это мой скрипт из javaScript, чтобы сделать это, если вам это нужно:

    $(function(){
    $(‘#busqueda’).keyup(function() {
        $.ajax({
            type: “POST”,
            url: “searchAjax/”,
            data: {
                ‘busqueda’: $(‘#busqueda’).val(),
                ‘csrfmiddlewaretoken’: $(“input[name=csrfmiddlewaretoken]”).val()
            },
            success: searchSuccess,
            dataType: ‘html’
        });
    });
});

function searchSuccess(data, textStatus, jqXHR)
{
    $(‘#resultado_busqueda’).html(data);
}

Надеюсь, вы сможете мне помочь, спасибо!

1 Ответ

2 голосов
/ 27 апреля 2019

Вы путаете запросы GET и POST

type: "POST",

должно быть

type: "GET"

, а

busqueda = request.POST.get('busqueda', '')

должно быть

busqueda = request.GET.get('busqueda', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...