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 请求后加载模板的主要内容,如果未能解决你的问题,请参考以下文章

Ajax用响应替换html,但在加载css,js后加载内容

在 ajax 调用后加载视图,CodeIgniter

页面加载后加载mysql查询

在 adminlte-3 bootstrap-4 treeview 打开/隐藏页面加载后加载动态 AJAX 侧边栏菜单 jquery 不起作用

ShareThis - AJAX 内容不工作后加载的按钮

easyUI怎么实现form中combogrid点击后加载