Django:在 AJAX 请求后加载模板
Posted
技术标签:
【中文标题】Django:在 AJAX 请求后加载模板【英文标题】:Django: load template after AJAX request 【发布时间】: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 中?
【问题讨论】:
【参考方案1】:关于 Django 模板,您应该了解的一点是它们是由您的服务器呈现的,因此在客户端没有模板标签可以工作。所以是的,您应该创建一个单独的端点并通过 javascript 从中检索数据。
【讨论】:
以上是关于Django:在 AJAX 请求后加载模板的主要内容,如果未能解决你的问题,请参考以下文章
在 adminlte-3 bootstrap-4 treeview 打开/隐藏页面加载后加载动态 AJAX 侧边栏菜单 jquery 不起作用