Как я могу перекрасить веб-страницу или часть веб-страницы программным способом? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть два требования для встраиваемого приложения, которое я пишу, оба из которых требуют программного обновления веб-страницы извне веб-скрипта (я думаю).

Я пишу веб-приложение, в основном на Python,У меня работает главная веб-страница, но мне нужно добавить некоторые изменения, основанные на внешних событиях.Первый может быть самым простым.Мне просто нужно обновлять баннер часов раз в минуту.У меня есть немного кода Javascript, который мог бы добиться цели, но я не смог понять, как я мог бы выполнить Javascript из кода Python или, если это вообще возможно, сделать это.Это может быть сделано?Если нет, то если есть какой-то способ заставить веб-браузер перезагрузить свою страницу извне, то я мог бы просто запустить код из crontab.Есть ли сигнал kill, который сделает это, или, возможно, будет сделан, чтобы сделать это, используя bash, возможно?Поскольку веб-сервер (apache2) и браузер находятся на одной и той же машине, задержка не слишком большая проблема, но я все равно предпочел бы не загружать всю страницу целиком, если мне это не нужно.

Второе, что мне нужно сделать, это обновить подсветку некоторых полей веб-страницы при нажатии аппаратной кнопки.У меня работает следующий код Python.(Очевидно, что я бы заменил операторы печати некоторым кодом, который обновляет веб-страницу, отменяя выделение одного поля и выделяя другое поле.) Если мне придется использовать метод грубой силы, упомянутый выше, чтобы обновить страницу, то то же самое можнобудет сделано здесь, но опять же, я бы предпочел метод, который не требует перезагрузки всей страницы.Если мне придется заново загрузить всю страницу, я могу просто обновить значения в файле, который уже контролирует выделение, что я и сделаю в любом случае.

#!/usr/bin/env python3

import RPi.GPIO as GPIO
import time
from pins import pinsarrow  # get pin number definitions
pinsMode = GPIO.BOARD
GPIO.setwarnings(False)
GPIO.setmode(pinsMode)
for p in pinsarrow:
        GPIO.setup(p, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
def my_callback1(channel):
    print ("rising edge detected DOWN on ", pinsarrow[0])
def my_callback2(channel):
    print ("rising edge detected RIGHT on ", pinsarrow[1])
def my_callback3(channel):
    print ("rising edge detected LEFT on ", pinsarrow[2])
def my_callback4(channel):
    print ("rising edge detected UP on ", pinsarrow[3])

GPIO.add_event_detect(pinsarrow[0], GPIO.RISING, callback=my_callback1, bouncetime=300)
GPIO.add_event_detect(pinsarrow[1], GPIO.RISING, callback=my_callback2, bouncetime=300)
GPIO.add_event_detect(pinsarrow[2], GPIO.RISING, callback=my_callback3, bouncetime=300)
GPIO.add_event_detect(pinsarrow[3], GPIO.RISING, callback=my_callback4, bouncetime=300)

while True:
    time.sleep(10)
...