每X秒更新一次Jinja2变量 - Python Flask

时间:2016-09-05 04:03:33

标签: python html flask jinja2

我正在尝试更新index.html文件中的变量。我将在python中运行一个带循环的线程但是我想要一种更新下面列出的jinja2表的方法来更新每x秒,就像你使用php和ajax一样。

这是我的Jinja2代码:

<table border=1 id="allTable" class="display">
        <tbody id="eliteTable">
        <tr><td colspan=9 class=queueheader>Elite  (Current SLA: {{ eliteSLA | safe}}%)</td></tr>
        <tr><th>Skill</th><th>SLA</th><th>Calls Waiting</th><th>Hold Time</th><th>Staffed</th><th>Avail</th><th>ACW</th><th>Aux</th><th>ACD Calls</th></tr>
        {% for row in eliteList %}
            {% if row[2]|int > 30 %}
                <tr class=longwait>
            {% elif row[2]|int > 0 %}
                <tr class=waiting>
            {% else %}
                <tr>
            {% endif %}
            {% for i in row %}
                <td> {{ i | safe }} </td>
            {% endfor %}
            </tr>
        {% endfor %}
        </tbody>

    </table>

2 个答案:

答案 0 :(得分:1)

你需要一些javascript。

ajax请求或websockets,虽然ajax可能更简单。

只需将javascript setInterval()与ajax请求一起使用即可。

我建议使用库,也许是jquery,因为它非常简单。

$.get( "/auto_refresh", function( data ) {
  alert( "Data Loaded: " + data );
});

请注意,jinja2仅用于模板化,这意味着在某些时候jinja模板会被翻译成html / css。 因此,您可以像使用PHP时那样使用ajax。

答案 1 :(得分:0)

Jinja变量是在模板渲染时生成的。如果不使用某种类型的javascript,就无法以编程方式更新它们。

来自the docs(强调我的):

  

[Jinja]模板包含变量和/或表达式,在呈现模板时被值替换;和标签,控制模板的逻辑。模板语法受Django和Python的启发。