プロジェクトでこの 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に「developer」と入力すると、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 Models.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 ネットワーク タブのエラーは次のようなものです
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
djangoquery
がグローバルな名前と見なされるのはなぜですか? URLから取得しようとしているものです。
そのオートコンプリート機能に最適なHttpResponseを作成するのを手伝ってくれる人はいますか?
ありがとう!