Данные из скрипта на python выводятся на страницу с использованием flask и шаблонизатора jinja2.
Данные из трех ячеек массива выводятся в три строки и обновляются в браузере раз в 3 сек.
Код на python
#!/usr/bin/env python
# main script of page
import random
import os, sys
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/<name>', methods= ['GET'])
def main(name=None): # этот код выполняется сразу при первой загрузке страницы в браузере, а также переодически вызывается с нее по таймауту
# заполнение массива array_main:
array_main = [] # пустой список, его размер не определен
random_N1 = round(random.random(), 3) # округление до 3 знака после запятой
array_main.append(random_N1)
random_N2 = round(random.random(), 3) # округление до 3 знака после запятой
array_main.append(random_N2)
random_N3 = round(random.random(), 3) # округление до 3 знака после запятой
array_main.append(random_N3)
print ("array_main[0]=", array_main[0])
print ("array_main[1]=", array_main[1])
print ("array_main[2]=", array_main[2])
array_main = {'array_main': array_main}
return render_template("index.html", title='Test Array',
array_main=array_main)
####################################################################################################
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True)
Код HTML запроса:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=CP1251">
<!-- Подключение библиотеки jQuery: -->
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
//** Эта функция выполняется переодически, запрашиваются данные из скрипта index.py
setInterval(Test_OutputArray, 3000); // устанавливает время между запусками функции Test_OutputArray()
// Функция Test_OutputArray выводит данные из массива array_main:
// один раз при первой загрузке страницы!
// затем переодически через 3 сек.
function Test_OutputArray ()
{
$('#array_main').load(document.URL + ' #array_main');
}
</script>
</head>
<body>
<span style="color: green;" >Test output Array (version 1) </span><br>
<hr>
<div id="array_main">Вывод первого элемента массива array_main[0]: {{ array_main.array_main[0]}}</div>
<div id='array_main'>Вывод второго элемента массива array_main[1]: {{ array_main.array_main[1]}}</div>
<div id='array_main'>Вывод третьего элемента массива array_main[2]: {{ array_main.array_main[2]}}</div>
<hr>
</body>
</html>
При первой загрузке страницы в браузере все нормально: выводятся три строки с данными из трех ячеек массива, см. скрин sceen_1.jpg
Но потом при обновлении страницы через 3 сек. ранее выведенные данные из второй и третьей строк СМЕЩАЮТСЯ (переносятся) вниз в четвертую и пятую строку соответственно, и далее вывод осуществляется в первые три строки, см. скрин sceen_2.jpg
Как избавится от вывода в пять строк, чтобы данные из трех ячеек выводились только в три строки и не было смещения строк.
Версии:
Python 3.13.5
Flask 3.1.1
Проверено в Linux и Windows
Спасибо.