【问题标题】:Is it possible to update a jinja2 template variable using javascript?是否可以使用 javascript 更新 jinja2 模板变量?
【发布时间】:2016-05-23 06:14:22
【问题描述】:

我的模板中有一个如下所示的表格:

{% if table %}
  {% for row in table %}
  <tr>{{ row }}</tr>
  {% endfor %}
{% endif %}

最初,'table' 设置为 null,所以什么都没有显示。

我有一个 javascript 客户端,它有时会从服务器接收一些数据。然后需要将这些数据显示给用户。 我基本上想用客户端收到的数据更新表格。

这可能吗?

【问题讨论】:

    标签: javascript google-app-engine jinja2


    【解决方案1】:

    这个问题的一个更通用的解决方案是将你的 Jinja 模板(部分)编译成 JavaScript,这样你就可以在客户端使用它们。

    我编写了一些代码来执行此操作,您也许可以使用:

    https://github.com/djc/jasinja

    【讨论】:

      【解决方案2】:

      我怀疑你能否实现它。但是还有另一种方法。将表格部分保存在单独的 HTML/模板中,该模板可以在渲染时包含在主 html 文件中。

      现在,当您在客户端收到数据时。更改数据的格式,而不是返回数据,只需在呈现表格模板时返回表格模板,并使用 javascript 您可以将现有表格替换为您在客户端收到的新表格。

      主 html 文件:

          <div>
              {% include 'table_template.html' %}
          </div>
      

      table_template.html

      {% if table %} {% for row in table %}
          <tr>{{ row }}</tr>
      {% endfor %} {% endif %}
      

      第 1 步:最初,只需按原样返回主 html 文件。

      第 2 步:当客户端收到数据时,请确保返回渲染后的table_template.html

      第 3 步:收到渲染数据后,将现有表替换为新表。 例如:

      $.post("/api-url", function(result) {
              if (result) {
                  //here you replace the existing null table with the new rendered table
                  $("table").html(result); 
              }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        • 2015-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多