首页 文章

Flask / Jinja - 在点击或定时器上重新渲染UITab,无需刷新页面

提问于
浏览
0

我有一个带有Jinja模板的Flask服务器,它正在跟踪网络PC的当前状态 . 以下是设置的屏幕截图 .

enter image description here

顶部的每个Gauge表示该工作组上的活动客户端数,但也是仅查看该工作组的过滤器 .

每个Gauge代表一个 UITab . 当我点击Gauge时,它会将我带到选项卡,并使用 Jinja 比较来检查它是否属于选项卡的表格 .

问题 - 我想动态更新页面,无需刷新 . 目前,仪表会上下调节,动态没问题,但数据表没有正确重新渲染 .

如果我将工作站从workgroup01移动到workgroup02,则仪表将进行限制,但行项目将不会移动到正确的表格 . 我在计量器的计时器上使用AJAX,但我需要以某种方式重新触发 computer.current_workgroup == workgroup 检查以获得表上的动态更新

这可能与Jinja有关,还是我必须编写一个很长的自定义函数来执行此操作?我出于后勤原因试图避免定制工作 .

以下是与文档流程相关的一些相关代码,我试图删除非必要代码,如果需要更多,请告诉我 .

index.html

<div id="tabs" >
    <ul id="gaugeList">
        {% for workgroup in context['workgroup_list'] %}
            <li><h3>
                <a class="gaugeCell" id="{{ workgroup }}"
                   href="#tabs-{{ workgroup.name }}">

                <script type="text/javascript">
                    //  The  gauges
                </script>
                </a></h3></li>
        {% endfor %}
    </ul>

    {% for workgroup in context['workgroup_list'] %}

    <div id="tabs-{{ workgroup.name }}" class="scrollable">

        <table class="tablesorter">

            <thead>
            <!-- Header stuff -->
            </thead>

            <tbody id="{{workgroup.name}}_table" class="table_body">
                {% for computer in context['computer_list'] %}


                {% if (computer.current_workgroup == workgroup.shorthand) or (workgroup.name == 'All') %}

                <tr id="{{computer.name}}" class="parent">
                <td>
                <-- TD's for table --> 
                </td>




            {% endif %}
            {% endfor%}
            </tbody>

        </table>
        </div>


    {% endfor %}

有什么想法吗?谢谢阅读

1 回答

  • 1

    我不相信它可以直接使用jinja2实现,我会创建一个额外的控制器,只返回表的HTML(没有html,header,body-tags等),为此你可以使用jinja2模板 .

    如果你有这个,使用jquery的.load(),你可以每n秒从这个控制器获取数据,并从主页面更新相应的div . http://api.jquery.com/load/

相关问题