如何在 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] 中订阅代理=] 在浏览器中直接获取更新,然后相应地更新页面。