使用呈现的Django模板响应AJAX

时间:2015-04-16 23:43:27

标签: jquery ajax django

我希望能够将完全呈现的模板返回到ajax调用。例如:

segment.html

<div class="swappable_segment" id="{{ id }}">
    {% for object in objects %}
        <li>Some text</li>
    {% endfor %}
</div>

views.py

def f(request):
    return SOMETHING

应该有ajax代码,这样当我按下页面上的按钮时,它会用新渲染的div交换掉旧的div。

我知道如何做AJAX部分,但我想知道函数f应该返回什么。我认为它应该返回一个带有JSON的HttpResonse对象和新div的html,但我不知道如何实际呈现它。

1 个答案:

答案 0 :(得分:3)

这样的事情怎么样:

from django.template.loader import render_to_string

def f(request):

    [...] #logic here to get objects_list

    if request.is_ajax():
        html = render_to_string('path/to/your/segment.html', {'objects': objects_list})
        return HttpResponse(html)

文档:https://docs.djangoproject.com/en/1.7/ref/templates/api/#the-render-to-string-shortcut