обновить переменную в веб-приложении с flask - PullRequest
0 голосов
/ 04 мая 2020

У меня есть программа и настройка arduino, которая определяет количество автомобилей с парковки. Количество автомобилей напечатано на серийном каждый раз, когда датчик обнаруживает автомобиль перед шлагбаумом. Я хочу напечатать количество автомобилей со стоянки в маленькое веб-приложение. Я использую Tera Term для сканирования моей последовательной шины и помещаю выходные данные в текстовый файл (data.txt). Затем я использую python, чтобы прочитать значение из этого текстового файла и отобразить его на странице HTML в веб-приложении.

Вот код python:

from flask import Flask, render_template
import logging
import requests


# Initialize the Flask application
app = Flask(__name__)

# Define a route for the default URL, which loads the form
@app.route("/")
def form():
 with open('date.txt') as f:
     data = []
     lines = f.read().splitlines()
     data.append(lines)
 for i in data:
     return render_template('index.html', variable=data)


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

здесь индекс. html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Arduino Project</title>
    <style>
        body{
            background: antiquewhite;
        }
h1 {color:red;
text-align: center;}
h2 {color:blue;
   text-align: center;}
</style>
</head>
<body>
<h1> - Arduino - </h1>
<h2> Number of cars in the parking place: {{ variable }}<br></h2>
<script> setTimeout(function(){
   window.location.reload(1);
}, 5000);
</script>
</body>
</html>

Работает нормально, но я хочу иметь только переменную, которая обновляется каждые 5 секунд, когда страница обновляется. Я не хочу видеть все значения из date.txt, только последний.

Так выглядит мое веб-приложение с этим кодом до сих пор: (игнорируйте сообщение об ошибке) введите описание изображения здесь

1 Ответ

0 голосов
/ 04 мая 2020

Возврат кратных раз невозможен.

Оператор return используется для завершения выполнения вызова функции и «возвращает» результат (значение выражения после ключевого слова return) в вызывающий абонент. Операторы после операторов возврата не выполняются.

Таким образом, эту часть можно изменить:

 for i in data:
     return render_template('index.html', variable=data)

Вы сказали, что хотите только последнюю строку. Поэтому замените вышеприведенное на следующее:

  return render_template('index.html', variable=data[-1])

Документация

Получение последнего элемента списка

https://www.geeksforgeeks.org/python-return-statement/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...