可以在Django中使用jquery实时更新模板吗?

时间:2019-05-28 10:34:14

标签: jquery django

我的脚本在django模板中每2秒发出一个ajax请求。该脚本基本上每2秒从cpu_view调用views.py函数,此函数更新填充django表所需的数据。

一切正常,除了页面(尤其是页面的html内容)每次都刷新(包括使页面看起来有点怪异的IMO的所有按钮)都刷新。所以我认为也许有更好的方法可以做到这一点。基本上,我在这里要做的是为服务器创建一个小型监视应用程序。

感谢任何建议或帮助。

模板 cpu.html

{# server/templates/server/table.html #}
{% load render_table from django_tables2 %}
{% load static %}
<!doctype html>
<html>
    <head>
        <title>List of persons</title>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <script type="text/javascript" src="{% static '/server/jquery-3.4.1.js' %}"></script>
        <script type="text/javascript">
            function executeQuery() {
                $.ajax({
                    type: 'GET',
                    url: '/server/cpu',
                    success: function(data) {
                        $("html").html(data)
                    }
                });
            }
            setInterval(executeQuery, 2000);
        </script>
    </head>
    <body>
        {% render_table table %}
    </body>

</html>

views.py

def cpu_view(request):
    output = []
    listServers = Serveurs.objects.all()

    for x in get_proc_output():
        pid = x.get('pid')
        for y in get_netstat_output():
            if pid in y.values():
                output.append({**x,**y})

    for i in listServers:
        for j in output:
            if i.port in j.values():
                j['type_server'] = i.type_du_serveur

    table = TableServeur(output)
    RequestConfig(request).configure(table)
    return render(request, 'server/table.html', {'table': table})

0 个答案:

没有答案