2012-04-02 3 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