是否可以使用javascript更新jinja2模板变量?

时间:2016-02-12 07:13:24

标签: javascript google-app-engine jinja2

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

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

最初'table'设置为null,因此不显示任何内容。

我有一个javascript客户端,在某些时候,从服务器接收一些数据。然后需要向用户显示该数据。 我基本上想用客户端收到的数据更新表。

这可能吗?

2 个答案:

答案 0 :(得分:1)

这个问题的一般解决方案是将您的Jinja模板(部分)编译为JavaScript,以便您可以在客户端使用它们。

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

https://github.com/djc/jasinja

答案 1 :(得分:0)

我怀疑你能否实现它。但还有另一种方式。将表格部分保存在单独的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); 
        }
});