jquery - 如何将标签和值的字典传递到 jQuery 自动完成中
问题描述
我正在尝试将标签和值的字典传递到我的模板中,以便我可以使用 jQuery 在我的一个字段上使用自动完成功能。问题是我的字典没有正确传递。
我有一个 Django 模型Question
,它有一个问题(标签)和一个 slug(值)。我想将这两个都传递到我的模板中,以便当有人点击问题文本时,我可以将它们重定向到该问题的 url/slug。
问题.html
<input id="search-bar" name="question" type="text" class="form-control" placeholder="Find your next question..." aria-label="Find your next question...">
<div class="input-group-append">
<button id="search-question-button" class="btn" type="submit">Search</button>
</div>
<script>
$(function () {
$("[name='question']").autocomplete({
source: "{% url 'questions' slug=question.slug %}",
select: function (event, ui) {
window.location.href = ui.item.value;
console.log(ui.item);
}
});
});
</script>
视图.py
if 'term' in request.GET:
qs = current_questions.filter(question__istartswith=request.GET.get('term'))
qs_dict = dict()
for question in qs:
qs_dict['label'] = question.question
qs_dict['value'] = question.slug
print(qs_dict)
return JsonResponse(qs_dict, safe=False)
在我的 django 项目控制台中,我正在打印这本字典,它似乎打印正确{'question': "Blah blah blah", 'slug': 'blah-blah-blah'}
但是,当我使用 chrome 检查我的网站时,我发现标签和值是相同的,并且我的字典没有正确传递。
编辑:
所以现在我传入一个查询集列表:
视图.py
if 'term' in request.GET:
qs = current_questions.filter(question__istartswith=request.GET.get('term'))
qs_list = []
for question in qs:
qs_list.append(qs.values('question', 'slug'))
return JsonResponse(qs_list, safe=False)
但我得到了错误TypeError: Object of type QuerySet is not JSON serializable
。
另外,这是否意味着我必须将我的键从“问题”和“蛞蝓”更改为“标签”和“价值”?
解决方案
推荐阅读
- exchangewebservices - 从 Azure 门户中删除 Exchange 应用权限
- c# - C#使用输入参数调用存储的MYSQL过程
- angular - TypeError:您在预期流的位置提供了“未定义”。您可以提供 Observable、Promise、Array 或 Iterable。在
- python - 使用 df.loc 和 astype() *有时* 问题 SettingWithCopyWarning 分配给列切片
- python-3.x - Python Turtle 已停止聆听
- node.js - 在 IIS 服务器 2016 上部署 nodejs 并出现错误:500
- powerbi - 如何减少 Power BI 中的表刷新时间?
- pandas - 如何根据另一个数据框中的字符串类别计算字符串在 pandas 列中出现的次数?
- angular - Angular11如何在不等待服务器响应的情况下完成POST请求?
- laravel - 无法从路由获取请求的数据