2012-04-02 11 views
5

私のブログの基本的な検索に取り組んでいます。基本的な機能がアップしています。しかし、私が思っているのは、Ajaxレスポンスでコンテキスト変数を返すことができ、それがテンプレートでアクセスできるかどうかです。ここに私の検索defがあります:Djangoコンテキスト変数とAjaxレスポンス

from django.http import HttpResponse 
from django.db.models import Q 
from django.core import serializers 

def search(request): 
    if request.is_ajax(): 
     query = request.POST['query'] 
     text_list = Text.objects.filter(Q(title__icontains=query) | Q(mytextfield__icontains=query)) 
     data = serializers.serialize("json", text_list) 
    else: 
     data = "whoops" 
    return HttpResponse(data,'application/javascript') 

これはjqueryによって要求されます。私がやりたいと思ってる何

$(document).ready(function() { 
    $('#search').submit(function(){ 
     $.post("/search/search/", $("#search").serialize(), function(data){ 
      // Search results for: **query** 
      $.each(data, function(index){ 
       $(ajax).append(data[index].fields.title + "<br>"); 
      }); 
     }, "json"); 
     return false 
    }); 
}); 

は戻って私のjqueryの関数に、デフ検索に含まれるクエリ変数を渡しています。通常のhttpレスポンスでは、コンテキスト変数を使用します...しかし、それらをjQueryでどのように渡すことができるかはわかりません。

答えて

3

あなたができることは、結果だけでなく、辞書をHttpResponseに戻すことです。

data = { 
    'query': request.POST['query'], 
    'results': serializers.serialize("json", Text.objects.filter(Q(title__icontains=query) | Q(mytextfield__icontains=query))) 
} 

return HttpResponse(json.dumps(data), 'application/javascript') 

jsonまたはsimplejsonを必ずインポートしてください。

+0

有望なジョーダンに見えます。家に帰るときに試してみるよ。 – bento

関連する問題