Как отобразить переменную python в Django UI
Я пытаюсь подписаться на тему MQTT под названием Wind
. После этого я хочу отобразить значение в моей диаграмме Django. Но всякий раз, когда я возвращаю результат моего MQTT значения с помощью test
, он показывает мне name 'test' is not defined
.
Моя идея: Глобализировать msg.topic
с помощью test
и затем использовать test
в классе showdata
. Но, к сожалению, это не работает, есть ли у кого-нибудь идеи по этому вопросу? Спасибо
Мой код (views.py):
from django.shortcuts import render
from paho.mqtt import client as mqtt_client
import random
broker = 'localhost'
port = 1883
topic = "Wind"
# generate client ID with pub prefix randomly
client_id = f'python-mqtt-{random.randint(0, 100)}'
# username = 'emqx'
# password = 'public'
def showdata(request):
context = test
return render(request, 'index.html', {'data': context})
def connect_mqtt() -> mqtt_client:
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)
client = mqtt_client.Client(client_id)
client.on_connect = on_connect
client.connect(broker, port)
return client
def subscribe(client: mqtt_client):
def on_message(client, userdata, msg, request):
print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
global test
test = msg.topic
client.subscribe(topic)
client.on_message = on_message
def run():
client = connect_mqtt()
subscribe(client)
client.loop_forever()
if __name__ == '__main__':
run()