【问题标题】:Django: load template after AJAX requestDjango:在 AJAX 请求后加载模板
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-10-20
      • 1970-01-01
      • 2020-05-28
      • 2020-08-31
      • 2011-11-29
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多