我的带有Ajax的搜索框在Django中不起作用

时间:2019-04-27 16:06:37

标签: python ajax django search

我正在与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(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 个答案:

答案 0 :(得分:2)

您混淆了GET和POST请求

type: "POST",

应该是

type: "GET"

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

应该是

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