【发布时间】:2016-09-09 01:01:25
【问题描述】:
我目前在我的项目中有一个有效的搜索表单,它将表单数据传递给 GET 请求。很标准。 我想要做的是在将数据输入搜索表单时进行搜索,以便结果将与搜索数据一起实时显示。这很像谷歌对即时桌面结果所做的事情。 Django可以做到这一点吗? 以下是我当前的(简单)搜索
#views.py
def ProductView(request):
title = 'Products'
all_products = Product.objects.all().order_by("product_Name")
query = request.GET.get("q")
if query:
products = all_products.filter(
Q(product_Name__contains=query) |
Q(manufacturer__contains=query)
).distinct()
return render(request, 'mycollection/details.html', { 'all_products' : products })
-
<!-- HTML -->
<!-- SEARCH BAR -->
<form class="navbar-form navbar-left" role="search" method="get" action="{% url 'mycollection:products' %}">
<div class="form-group">
<input type="text" class="form-control" name="q" value="{{ request.GET.q }}">
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
【问题讨论】:
-
“实时显示”是指用户输入时(即在发送 GET 请求之前?)
-
这当然是可能的。但是,对我来说,解决方案听起来更像是一个 Javascript 问题。您需要有一个有效的 Javascript 实用程序,该实用程序可以对端点进行 Ajax 调用,该端点返回(例如)带有搜索结果的 json 对象,然后 Javascript 返回到浏览器。问题是“如何”是一个非常复杂的答案,它高度依赖于您网站的前端架构。
-
是的,denvaar,我希望在没有 GET 请求的情况下执行此操作。酒仙,我不太热衷于 Javascript,但我需要更多地参与其中。您是否有一个示例实现您所指的内容,我可以尝试根据我的需求进行定制?