我正在与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);
}
希望可以帮助我,谢谢!。
答案 0 :(得分:2)
您混淆了GET和POST请求
type: "POST",
应该是
type: "GET"
和
busqueda = request.POST.get('busqueda', '')
应该是
busqueda = request.GET.get('busqueda', '')