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

Is it possible to update a jinja2 template variable using javascript?

我的模板中有一个 table,如下所示:

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

最初 'table' 设置为空,因此没有任何显示。

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

这可能吗?

我怀疑你能不能做到。但还有另一种方法。将 table 部分保存在单独的 HTML/template 中,渲染时可以将其包含在主 html 文件中。

现在,当您在客户端接收到数据时。更改数据格式,而不是 returning 数据,只需 return 呈现 table 模板并使用 javascript 即可替换现有的 table 使用您在客户端收到的新 table。

主 html 文件:

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

table_template.html

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

第 1 步:最初,只是 return 主 html 文件。

第 2 步: 当客户端收到数据时,请确保您 return 呈现 table_template.html.

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

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

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

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

https://github.com/djc/jasinja