我有一个程序,从我的树莓派传感器获取数据,我希望从树莓获取的数据显示在网页上,这个想法是,它可以更新每次你按下一个按钮,它在网络上。我现在正在使用django来创建网页,但我不知道它是否对我正在尝试做的事情来说太复杂了。下面是我的数据提取器代码:
import bme280
import smbus2
from time import sleep
port = 1
address = 0x76 # Adafruit BME280 address. Other BME280s may be different
bus = smbus2.SMBus(port)
bme280.load_calibration_params(bus,address)
bme280_data = bme280.sample(bus,address)
humidity = bme280_data.humidity
pressure = bme280_data.pressure
ambient_temperature = bme280_data.temperature
下面是django views.py文件:
from django.shortcuts import render
from django.http import HttpResponse
import sys
sys.path.append('/home/jordi/weather-station/data')
from bme280_sensor import humidity, ambient_temperature, pressure
from subprocess import run,PIPE
# Create your views here.
def home(request):
return render(request, 'base.html', {'humitat': humidity, 'temperatura': ambient_temperature, 'pressio': pressure})
def index(request):
return HttpResponse("EL temps de vilafant")
最后,我有一个html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>Aqui podras veure el temps de vilafant en un futur, no tinguis presa</p>
<h1>La humitat d'avui és: {{humitat}}</h1>
<h1>La temperatura d'avui és: {{temperatura}} Cº</h1>
<h1>La pressió d'avui és: {{pressio}}</h1>
<input type="button"><br><br>
</body>
</html>
我怎样才能使在html文件中创建的按钮更新html页面中显示的变量?
我曾尝试创建一个按钮并链接它,以便它可以运行数据提取器文件另一次,但发现页面中显示的变量没有更新。
2条答案
按热度按时间368yc8dk1#
问题是,因为
views.py
在启动应用程序时只加载once
,所以变量不会改变。你需要写一个函数来重新加载你的数据,比如:sensors.py (我通过模拟值进行了测试,因此它是一个不同的函数)
views.py
然后使用按钮向视图发送
GET
请求,从而重新加载数据并使用新值呈现页面:home.html
mefy6pfw2#
也许你把按钮连接到一个url路径,每隔x秒轮询一次。我推荐这样的东西