Django上下文变量和Ajax响应

5

我正在为我的博客开发基本搜索功能,基本功能已经实现。但我想知道,在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
    });
});

我想要做的是将包含在 def search 中的 query 变量传递回我的 jQuery 函数。在常规的 HTTP 响应中,您可以使用上下文变量... 但我不确定如何使用 jQuery 传递这些变量。

1个回答

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模块。


看起来很有前途,Jordan。我回家后会试一下。 - bento

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接