我正在使用Django web-framework进行数据库,页面生成等。
jQueryUI / javascript方面的代码
我想使用jQueryUI's autocomplete widget,因为我的数据集将包含我想查询数据库的大约1,000个条目。在上面的链接上,它声称您只需提供一个返回JSON数据的URL:
可以自定义自动填充功能 通过各种数据源 指定源选项。一个数据 来源可以是:
* an Array with local data * a String, specifying a URL * a Callback
我从网站上获取了default example,该网站适用于我的系统。
但是,如果我更改以下内容:
$( "#tags" ).autocomplete({
source: availableTags,
});
到
$( "#tags" ).autocomplete({
source: "/search/", // url that provides JSON data
});
自动完成功能根本不起作用。
我尝试过让url实际上返回一个错误(看它是否使用它)并输入完整的网址http://localhost:8000/search/
,但没有任何效果。
Django代码的一部分
在url.py中
...
(r'^search/$', 'search'),
...
在views.py
中from django.http import HttpRequest, HttpResponse
from django.utils import simplejson
...
def search(request):
HttpResponse(simplejson.dumps(["hello", "world"]))
# Will implement proper suggestions when it works.
我的代码一定有问题,我非常感谢您提供的任何帮助:)
编辑解决方案:
感谢@Thierry意识到它之前没有return
声明,已添加,所以我现在看起来像这样:
def search(request):
output = ["hello", "world"]
return HttpResponse(simplejson.dumps(output))
它确实有效!
(似乎总是浪费我大部分时间的小虫子,grrr)
答案 0 :(得分:2)
我返回我的ajax响应,如下所示:
def search(request):
output = ["hello", "world"]
return HttpResponse(output, mimetype="application/javascript")
如果您访问网址http://localhost:8000/search/
,则应该看到输出。看到输出后,自动完成功能就可以了。
答案 1 :(得分:1)
在以后的版本中,json序列化API有一些变化
对于django 1.6使用
import json
from django.http import HttpResponse
....
return HttpResponse(json.dumps(my_data_dictionary))
对于django 1.7+,请执行here