Не обновляются данные на web-странице flask

Я хочу с помощью random отображать число на web-странице и при get запросе обновлять число полученное при помощи random вот такой код у меня есть:

from flask import Flask, request, render_template
from random import randint



app = Flask(__name__)

@app.route('/')

def temperature():

    rand = randint(0, 9)
    s = render_template('home.html', rands = rand)
    print(rand)
    print(s)
    return s

if __name__ == "__main__":
    app.run()

home.html выглядит так:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Temperature</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
 <div id ="temperature">

 </div>
 <script>
 function NewData(){
   $.get("/", function(data, status){
    $("#temperature").text({{rands}});
    })
   }

 setInterval(() => NewData(), 20000);

 </script>
</body>
</html>

при перезагрузке страницы в ручную (нажав F5) в {{rands}} записывается новое рандомное значение, но когда работает скрипт и происходит get запрос через скрипт, то полученное значение числа всегда одно и тоже

Хотя в консольном выводе при каждом get запросе выводится новое рандомное число, а на web-сайте всегда статичное число полученное при первом запуске web-страницы

вот пример, всегда статичное число, полученное при первой загрузке web-страницы = 9 web-страница первый вывод в консоль, получаем значение = 9 введите сюда описание изображения второй вывод в консоль значение уже = 0, но на веб странице по прежнему = 9 введите сюда описание изображения


Ответы (1 шт):

Автор решения: Roman-Stop RU aggression in UA

В этом ничего удивительного. Вы же генерируете случайное число один раз при загрузке страницы. Далее при вызове функции NewData она всегда использует то же самое число, так вы его прописали как константу в html странице.

Нужно чтоб NewData использовала результат запроса на сервер, а не константу:

 function NewData(){
   $.get("/temp", function(data, status){
    $("#temperature").text(data.value);
    })
   }

А на сервере нужно создать endpoint, который будет возвращать данные для NewData:

@app.route('/')
def home():
    s = render_template('home.html')
    return s

@app.route('/temp')
def temperature():
    rand = randint(0, 9)
    return {'value': rand}
→ Ссылка