2012-04-02 18 views
5

Estoy trabajando en una búsqueda básica para mi blog, y la funcionalidad básica está funcionando. Lo que me pregunto, sin embargo, es si puede devolver las variables de contexto en una respuesta ajax, que luego se podría acceder en la plantilla. Aquí está mi búsqueda def:Variables de contexto Django y respuesta 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') 

Esto se solicita a través de 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 
    }); 
}); 

Lo que estoy queriendo hacer es pasar la variable deconsulta, contenida en busca def, de vuelta a mi función de jQuery. En una respuesta http regular, usaría variables de contexto ... pero no estoy seguro de cómo se podrían pasar con jQuery.

Respuesta

3

Lo que puedes hacer es pasar un diccionario a tu HttpResponse en lugar de solo los resultados.

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') 

Asegúrate de importar json o simplejson.

+0

Parece prometedor Jordania. Lo intentaré cuando llegue a casa. – bento

Cuestiones relacionadas