使用 Django / Python 为 Typeahead / Bloodhound 提供远程 JSON 数据

Posted

技术标签:

【中文标题】使用 Django / Python 为 Typeahead / Bloodhound 提供远程 JSON 数据【英文标题】:Supplying remote JSON data for Typeahead / Bloodhound with Django / Python 【发布时间】:2021-10-25 11:00:57 【问题描述】:

我正在尝试复制 this Typeahead remote example 的功能,但我不知道如何以 Typeahead / Bloodhound 想要的方式提供数据,也不知道 datumTokenizerqueryTokenizer 的用途。

在 Python / Django views.py 我有:

nouns = ['apple', 'banana', 'pear']
return JsonResponse('results': nouns)

以如下方式到达网站:

"results": ["apple", "banana", "pear"]

然而for 'kings' the example returns:

["year": "1949","value":"All the Kings Men","tokens":["All","the","Kings","Men"]]

需要我们以这种格式返回它吗?如果是这样,怎么做?我们如何对示例进行简单的复制?

【问题讨论】:

【参考方案1】:

想通了:实际使用return HttpResponse(nouns),或return JsonResponse(nouns, safe=False)

如果出于安全考虑,请将其作为字典发送:

noun_dicts = ['suggestion':x for x in nouns]
return JsonResponse('results':noun_dicts)

然后在JS中解析dict。

【讨论】:

以上是关于使用 Django / Python 为 Typeahead / Bloodhound 提供远程 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

python Django - 将SQL查询转换为ORM查询

Python学习笔记第二十六周(Django补充)

Django 提示:Object of type ‘QuerySet‘ is not JSON serializable

Python/Django:数据库模型中字段“类型”的同义词(保留的内置符号)

python--Django+uwsgi+nginx

在 python/Django 中多次迭代 json 对象