是否可以使用 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,以便您可以在客户端使用它们。
我写了一些代码来执行此操作,您也许可以使用它们:
我的模板中有一个 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,以便您可以在客户端使用它们。
我写了一些代码来执行此操作,您也许可以使用它们: