-1

プロジェクトでこの 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を作成するのを手伝ってくれる人はいますか?

ありがとう!

4

1 に答える 1

3

そのはず。

to_json = {'query': q, 'suggestions': s}

基本的に何が起こっていたのかというと、{query:q ...python は変数 query を探して、辞書のキーを文字列クエリが指している可能性があるものに設定しましたが、そのような変数は存在せず、エラーが返されました...

global name 'query' is not definedエラーが示すように、pythonは変数クエリを探していました。最初に関数スコープでローカルにチェックし、次にグローバルスコープに到達するまで上に移動し、見つからない場合はその例外をスローします。

于 2012-06-12T07:03:19.570 に答える