django views.py接收json数据

这篇博客讲述了如何在Django中使用views.py接收并处理JSON数据,通过json库进行解析。接着,展示了如何与数据库交互,包括查询HaDevices表,根据条件插入或更新数据,并设置自定义昵称。最后,返回HTTP响应,包含设备ID和MQTT主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from django.shortcuts import HttpResponse
from json_data.models import HaDevices
from django.db import connection
import json
from json_data import mqtt_client
import paho.mqtt.client as mqtt
import time

default_dtfield = ‘2016-01-01 00:08:00’

def get_data(request):
jso = request.GET.get(‘json’)
ss = json.loads(jso)
# sa = json.load(jso)
ids = ss.get(‘macAddr’)
types = ss.get(‘type’)
print(ss)
print(ids)
print(types)
type_str = {“undefined”, “switch”, “socket”, “light”}
for x in type_str:
if types == x:
return types
cursor = connection.cursor()
cursor.execute(“SELECT id FROM ha_devices WHERE hw_id = ‘%s’” % ids)
rows = cursor.fetchall()
print(rows)
cursor.execute(“INSERT INTO ha_devices SET hw_id = ‘%s’, type=’%s’” % (ids, types))
cursor.execute(“UPDATE ha_devices SET nickname=CONCAT(‘DEV_’, LPAD(id,5,‘0’)) WHERE hw_id=’%s’” % ids)
cursor.execute(“SELECT id FROM ha_devices WHERE hw_id = ‘%s’” % ids)
get_id = cursor.fetchall() # 获取返回的数据
topic = “/DEVICE/”
print(rows)
print(get_id)
print(topic)
return HttpResponse(json.dumps({
“id”: get_id, “topic”: topic}))
# return HttpResponse(“json = %s” % ss)

def get_json(request):
global haDevices_all
global haDevices_obj
jso = request.GET.get(‘json’)
ss = json.loads(jso)
ids = ss.get(‘macAddr’)
types = ss.get(‘type’)
print(ss)
print(ids)
print(types)
try:
haDevices_all = HaDevices.objects.get(hw_id=’%s’ % ids)
except HaDevices.DoesNotExist:
print(“没有该数据”)
haDevices_obj = HaDevices.objects.create(hw_id=’%s’ % ids, type=1, nickname=‘undefined’, online=0, switch=0,
light_r=0, light_g=0, light_b=0)
haDevices_obj.save()
if len(str(haDevices_obj.id)) < 5:
n = str(haDevices_obj.id).zfill(5)
print(n)
haDevices_obj.nickname = “DEV_” + str(n)
else:
m = haDevices_obj.id
print(m)
haDevices_obj.nickname = “DEV_” + str(m)
# print(haDevices_all)
get_id = haDevices_obj.id
topic = “/DEVICE/”
else:
if len(str(haDevices_all.id)) < 5:
n = str(haDevices_all.id).zfill(5)
print(n)
haDevices_all.nickname = “DEV_” + str(n)
haDevices_all.save()
else:
m = haDevices_all.id
print(m)
haDevices_all.nickname = “DEV_” + str(m)
haDevices_all.save()
get_id = haDevices_all.id
topic = “/DEVICE/”

return HttpResponse(json.dumps({"id": get_id, "topic": topic}))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值