У меня есть скрипт, который делает ajax-запрос каждые 2 секунды в моем шаблоне django.Этот скрипт в основном вызывает функцию cpu_view
из views.py
каждые 2 секунды, и эта функция обновляет данные, необходимые для заполнения моей таблицы django.
Все работает нормально, за исключением того, что страница или, в частности, html-содержимое страницы обновляется каждый раз, включая все кнопки, которые делают страницу выглядит странно для ИМО.Поэтому я подумал, может быть, есть лучший способ сделать это.По сути, я пытаюсь создать небольшое приложение для мониторинга своих серверов.
Любой совет или помощь приветствуются.
Шаблон 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})