2016-11-04 101 views
1

我正在使用Django模板,在特定的模板中,我加载了两个div,内容执行两个AJAX请求以使事情变得更快。Django:AJAX请求后加载模板

我说的主要模板包括一个视图在结尾,实际上主要是JS。事情是这个JS依赖于在这些AJAX请求中加载的数据,所以在必要的数据在HTML中之前,模板将呈现脚本。

快速方案:

{# main template #} 
{% block content %} 
    <div id="main">...</div> 
    <div id="load-data-1"></div> 
    <div id="load-data-2"></div> 
{% endblock %} 

{% block js }% 
    {% include 'template_with_scripts.html' %} 
{% endblock %} 

template_with_scripts.html

<script> 
    $.get(url1, function(data) { $('#load-data-1').html(data); }); 
    $.get(url2, function(data) { $('#load-data-2').html(data); }); 
</script> 

{% include 'scripts_related_with_ajax_loaded_data.html' %} 

所以我需要做的是加载脚本后的AJAX请求完成后,如this answer解释。

但我的问题是如何在AJAX调用完成后加载scripts_related_with_ajax_loaded_data.html文件。我应该创建一个新的路线和视图来将呈现的上下文作为HTML返回吗?看起来很奇怪,有点矫枉过正。有没有一个标记只是呈现你传递的任何模板,所以我可以将它附加到HTML?

回答

1

您应该了解的有关Django模板的一件事是它们由您的服务器呈现,因此没有模板标签将在客户端工作。所以是的,你应该创建一个单独的端点并通过Javascript从它检索数据。