【发布时间】:2017-03-18 07:43:08
【问题描述】:
我正在使用 Django 模板,在一个特定的模板中,我正在加载几个 div,其中包含执行两个 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 中?
【问题讨论】:
标签: javascript jquery ajax django django-templates