我的脚本在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})