如何在 Django 模板中更新 MQTT 数据
how update MQTT data in django template
我正在使用 paho-MQTT,我可以接收消息,并且可以在模板中显示数据(html),但是我无法在模板中实时更新消息(html).当我从 mosquitto/topic.
收到新消息时,我想更新模板中的值
from django.shortcuts import render
import paho.mqtt.client as mqtt
import json
valor_mqtt = 0
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("mhub/hr")
def on_message(client, userdata, msg):
global valor_mqtt
valor_mqtt = (msg.payload)
print(valor_mqtt)
def print_on_m(request):
global valor_mqtt
message = str(valor_mqtt)
return render(request, 'home/index.html',{'context':message})
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("mqtt.eclipseprojects.io", 1883, 60)
我在 urls.py 中传递 print_on_m 以在 home/index 中使用 {{context}} 来显示数据
PS:我不想在一段时间后使用像“setInterval(function() {”或“.load(window.location.href”这样的函数来更新网页的一部分,我只想在收到来自 mosquitto/topic
的新消息时更新
简短的回答是你不会在 django 中这样做。
模板只在服务器端渲染一次然后发送到客户端,发送后无法更新。
如果您的代理支持基于 WebSockets 的 MQTT,那么您可以使用 Paho JavaScript 客户端或 MQTT.js 客户端从页面 [=18] 中订阅代理=] 在浏览器中直接获取更新,然后相应地更新页面。
我正在使用 paho-MQTT,我可以接收消息,并且可以在模板中显示数据(html),但是我无法在模板中实时更新消息(html).当我从 mosquitto/topic.
收到新消息时,我想更新模板中的值from django.shortcuts import render
import paho.mqtt.client as mqtt
import json
valor_mqtt = 0
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("mhub/hr")
def on_message(client, userdata, msg):
global valor_mqtt
valor_mqtt = (msg.payload)
print(valor_mqtt)
def print_on_m(request):
global valor_mqtt
message = str(valor_mqtt)
return render(request, 'home/index.html',{'context':message})
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("mqtt.eclipseprojects.io", 1883, 60)
我在 urls.py 中传递 print_on_m 以在 home/index 中使用 {{context}} 来显示数据
PS:我不想在一段时间后使用像“setInterval(function() {”或“.load(window.location.href”这样的函数来更新网页的一部分,我只想在收到来自 mosquitto/topic
的新消息时更新简短的回答是你不会在 django 中这样做。
模板只在服务器端渲染一次然后发送到客户端,发送后无法更新。
如果您的代理支持基于 WebSockets 的 MQTT,那么您可以使用 Paho JavaScript 客户端或 MQTT.js 客户端从页面 [=18] 中订阅代理=] 在浏览器中直接获取更新,然后相应地更新页面。