我在我的项目中使用这个 JQuery 自动完成插件http://www.devbridge.com/projects/autocomplete/jquery/。我按照本教程http://tips4php.net/2010/09/ajax-autocomplete-with-jquery-and-php/进行操作。
自动完成的 jQuery 代码:
$('#add-keywords').autocomplete({
serviceUrl:'/keywords_suggestions',
minChars:3,
maxHeight:220,
width:280,
zIndex: 9999,
onSelect: function(value, data){ $('#add-keywords').val(value); },
});
来自 JQuery Autocomplete 的 Ajax GET 请求没有问题。就像,如果我在 GET 请求 url 中键入“开发者”将是input text
http://127.0.0.1:8000/keywords_suggestions/?query=developer
我在 Django 中得到这样的参数查询:
def kkeywords_suggestions(request):
if request.is_ajax():
q = request.GET.get('query', '')
try:
g = KeywordsModel.objects.filter(keyword__startswith=q).order_by('count')
except KeywordsModel.DoesNotExist:
return HttpResponse("not")
else:
for i in range(1,(len(g)+1)):
s = []
s.append(g[i-1].keyword)
to_json = {
query: q,
suggestions: s,
}
return HttpResponse(simplejson.dumps(to_json), mimetype='application/json')
Django 模型.py:
class KeywordsModel(models.Model):
keyword = models.CharField(max_length=40, blank=False)
count = models.IntegerField(max_length=20)
问题从这里发生request.GET.get('query', '')
。它显示错误
ValueError at /keywords_suggestions/
The view information.views.keywords_suggestions didn't return an HttpResponse object.
更新-1
抱歉,Chrome Network 标签中的错误是这样的
Request URL:http://127.0.0.1:8000/keywords_suggestions/?query=web
Request Method:GET
Status Code:500 INTERNAL SERVER ERROR
当我签入该 URL 时,它显示空白页。为什么?
更新-2
我request.is_ajax()
从视图中删除。现在我收到此错误:
Exception Type: NameError
Exception Value:
global name 'query' is not defined
Exception Location: /home/nirmal/try/information/views.py in keywords_suggestions, line 123
为什么 django 考虑query
作为一个全局名称?这是我试图从 url 中获取的那个。
谁能帮我为该自动完成功能制作一个完美的HttpResponse吗?
谢谢!