DJANGO使用ajax在基本模板中加载/包含模板

时间:2015-01-08 08:53:37

标签: javascript ajax django templates

我正在尝试使用ajax在django中加载模板。

我不想在所有其他模板中扩展基本模板,因为它需要很长的处理时间。

因此我找到了一种只加载base.html一次的方法,后面的请求只会在基础中包含他们的响应模板,即不再渲染base.html(标题和页脚和css的东西)。

是否有任何方法可以使用ajax在基本模板中加载其他模板,以便不会始终呈现整个页面。

1 个答案:

答案 0 :(得分:1)

是的,有一些方法:您必须避免在模板中使用{% extends "base.html" %}并使用render_to_string进行渲染;从Django视图返回渲染的HTML后,您可以使用javascript将它插入DOM中的首选位置。

此类操作的一小段示例

def element_form_ajax(request):
    form = PageForm()
    html = render_to_string('pages/element_form.html',
                            {'form': form},
                            RequestContext(request))
    data = {'form': html}
    return JsonResponse(data)

现在,来自网页的Ajax调用返回一个JSON对象,其中包含一个form键,其中包含一个HTML表单,可以在您喜欢的位置显示。

关于如何处理AJAX调用的CSFR令牌,请参阅the docs