物联网笔记-----------Django之models&json(一)

来源:互联网 发布:java microservice 编辑:程序博客网 时间:2024/05/15 08:19

一、Django中自己创造有关models的json串,并解析json串的实验:

1、models.py

from django.db import modelsfrom django.utils import timezonefrom . import IzUtilsimport jsonclass Proclas(models.Model):    Pcid = models.BigAutoField(db_column='PcID', primary_key=True)      Pcname = models.CharField(db_column='PcName', max_length=20)     def __str__(self):        return '{"Pcid":%s,"Pcname":%s}'%(self.Pcid,self.Pcname);    class Meta:        managed = False        db_table = 'vd_proclas'class Admins(models.Model):#管理员    adminId = models.BigAutoField(db_column='adminId', primary_key=True)     adminName = models.CharField(db_column='adminName', max_length=255)     adminPass = models.CharField(db_column='adminPass', max_length=255)     adminPhone = models.CharField(db_column='adminPhone', max_length=20)      adminTel = models.CharField(db_column='adminTel', max_length=20)     class Meta:        managed = False        db_table = 'vd_admins'class Adminops(models.Model):    opId = models.BigAutoField(db_column='opId', primary_key=True)  # Field name made lowercase.    opTime = models.DateTimeField(db_column='opTime',default=timezone.now)  # Field name made lowercase.    opCon = models.TextField(db_column='opCon')  # Field name made lowercase.    admin = models.ForeignKey('Admins', models.DO_NOTHING, db_column='adminId')  # 是一个Admins对象    def __str__(self):        return json.dumps({"opTime":self.opTime,"opCon":self.opCon,"admin":self.admin.adminId});#    class Meta:        managed = False        db_table = 'vd_adminops'
views.py

def initgoodnum(request):中

proc=Proclas(Pcid=2,Pcname="饮料");proc.save()print(proc);#{"Pcid": 2,"Pcname":饮料}pro=str(proc);print(pro);admin=get_object_or_404(Admins,adminId=1);opCon='{"action":添加商品种类,'+'"info":'+str(proc)+'}';print(opCon)ops=Adminops(opTime=datetime.now().strftime('%Y-%m-%d %H:%M:%S'),opCon=opCon,admin=admin);ops.save()#数据库中Adminops中增加一条记录。ops=str(ops)#返回的是json。#ops = json.loads(ops)#print(ops.get('admin',2))data={'ops':ops};#{键值:json串}print(data)ret = requests.post('http://192.148.34.137:8000/saler/test/',data=data);#本主机上进行的requests.post测试。print(ret.text);return HttpResponse('initgood success')
def test(request):if request.method=="POST":try:#多行注释代码,Ctrl+k,取消注释,ctrl+shift+kops=request.POST.get('ops','');print(ops)ops=json.loads(ops)print(ops);admin=get_object_or_404(Admins,adminId=ops['admin'])adminops=Adminops(opTime=ops['opTime'],opCon=ops['opCon'],admin=admin);adminops.save();#接收完request后,自己这一边又生成Adminops的一条记录data={"static":1}except:data={"static":"exception error"}else:data={"static":0}data=json.dumps(data);return HttpResponse(data);

结果显示为:


数据库中的结果:


二、

data是个字典,发给proclas_dlcl(request)方法,是以字典的形式发过去的。

键的值json格式:

data={"lists": [{"pro": {"Pcid": 1,"Pcname":'aaaa',},"ops": {"opTime": "2017-12-23 12:23:34","opCon": {"action": "添加商品种类","info": {"Pcid": 670,"Pcname": "computer"}},"adminId": 1}}]}

某方法对其的解析:

def procla_dlcl(request):if request.method=="POST":try:lists=request.POST.get("lists",default='');#获取字典键lists的值,json格式lists=json.loads(lists);#对值进行解析,成list列表。for i in range(len(lists)):#遍历列表。每个元素是字典形式。然而元素,字典中的键的值又是一个json。data=lists[i];pro=data['pro']pro=json.loads(pro);proclas=get_object_or_404(Proclas,Pcid=pro['pcId'])proclas.delete();ops=data['ops']ops=json.loads(ops);admin=get_object_or_404(Admins,adminId=ops['admin'])adminops=Adminops(opTime=ops['opTime'],opCon=ops['opCon'],admin=admin)adminops.save();ret="{Status:1}"except Exception:ret="{Status:0}"else:ret="{Status:0}"print(ret)ret=json.dumps(ret)return HttpResponse(ret)








原创粉丝点击