django - 使用 ajax 和 django 搜索数据并重定向到相关页面
问题描述
我正在建立一个网站,我想实现搜索。我希望用户输入一些文本并希望使用 ajax 显示建议。当用户点击特定产品或类别时,我想将用户重定向到相关页面。这是我到目前为止所做的:
$(function () {
$("#search").autocomplete({
source: "{% url 'ajax-search' %}",
select: function (event, ui) { //item selected
AutoCompleteSelectHandler(event, ui)
},
minLength: 5,
});
});
<div class="search">
<label for="search"></label>
<input type="text" oninput="" style="height: 36px" class="searchTerm" placeholder="What are you looking for?" name="searchtext" id="search">
<button type="submit" class="searchButton">
<i class="fa fa-search"></i>
</button>
</div>
path('ajax/search', views.autocompleteModel, name='ajax-search'),
def autocompleteModel(request):
if request.is_ajax():
q = request.GET.get('term', '')
lookups = Q(name__icontains=q) | Q(category__name__icontains=q)
products = Product.objects.filter(lookups).distinct()
results = []
for product in products:
place_json = {}
place_json = product.name
product_url = 'prodcuts/product/' + str(product.id)
results.append(place_json)
data = json.dumps(results)
else:
data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, mimetype)
解决方案
在您的 javascript 部分中,您必须执行以下操作:
$(function () {
$("#search").autocomplete({
source: "{% url 'ajax-search' %}",
select: function (event, ui) {
window.location.href = ui.item.value;
},
minLength: 5,
});
});
Python 代码部分应如下所示:
results = []
for product in products:
item = dict(
label = product.name,
value = '/products/product/' + str(product.id)
)
results.append(item)
data = json.dumps(results)
推荐阅读
- ios - UITableView 动画调整大小问题
- javascript - ajax调用成功后添加文本区域
- json - 服务器没有从远程 REST API 获取所有 JSON
- etl - 如何在 DataStage 中按照我的意愿(自定义)制作 XPATH 格式?
- javascript - Mocha - 无法实现 TestFunction 接口方法
- python - TensorFlow 多线程推理比单线程推理慢
- assembly - 如何在不使用标签的情况下跳转到特定行?
- python - 使用 pyodbc 时,SQL Server DateTimeOffset 将 tz 感知日期时间的偏移量更改为系统偏移量
- firebase - Flutter:Java 使用或覆盖已弃用的 API
- java - @EnableOAuth2Sso 和 @EnableResourceServer(同一应用程序中的客户端和资源行为)