Django Rest Framework:模型->JSON和JSON<-模型

本文介绍了如何使用Django Rest Framework将模型数据转换为JSON格式,并演示了从JSON数据恢复到模型的过程。在models.py中定义了模型,serializers.py中进行了序列化设置。通过console获取car数据后,展示了模型到JSON的转换代码及其测试,以及JSON数据反向转换回模型的代码实现。
摘要由CSDN通过智能技术生成

Django Rest Framework:模型->JSON和JSON<-模型

情况

模型文件 models.py

class Car(models.Model):
    first_name=models.CharField(max_length=40)
    last_namr=models.CharField(max_length=40)
    SHIRT_SIZES=(('S','小'),('M','中'),('L','大'))
    shirt_size=models.CharField(max_length=8,choices=SHIRT_SIZES)

    def __str__(self):
        return self.first_name+self.last_namr

序列化文件 serializers.py

#导入rest框架序列化组件
from rest_framework import serializers
#导入模型文件类
from Application.models import Car




class CarSerializer(serializers.Serializer):
     #此处和模型文件一致
    id = serializers.IntegerField(read_only=True)
    first_name = serializers.CharField(required=False, allow_blank=True, max_length=100)
    last_namr = serializers.CharField(max_length=40)

    shirt_size = serializers.CharField(max_length=8)

    def create(self, first_name):
        """
        Create and return a new `Snippet` instance, given the validated data.
        """
        return Car.objects.create(first_name=first_name,last_namr='test',shirt_size='L')

    def update(self, instance, validated_data):
        """
        Update and return an existing `Snippet` instance, given the validated data.
        """
        instance.first_name = validated_data.get('first_name', instance.first_name)
        instance.last_namr = validated_data.get('last_namr', instance.last_namr)
        instance.shirt_size = validated_data.get('shirt_size', instance.shirt_size)
        instance.save()
        return instance

console中,从数据中拿到一个car


from Application.models import Car
Car.objects.all()
<QuerySet [<Car: 罗浩>, <Car: 1last>]>
Car.objects.all()[0]
<Car: 罗浩>
Car.objects.all()[1]
<Car: 1last>
#从数据中拿到一个car
mycar=Car.objects.all()[1]
mycar
<Car: 1last>


模型->JSON

代码

#导入
from Application.serializers import CarSerializer
#生成rest框架支持的类
serializer=CarSerializer(mycar)
serializer.data
测试
serializer
CarSerializer(<Car: 1last>):
    id = IntegerField(read_only=True)
    first_name = CharField(allow_blank=True, max_length=100, required=False)
    last_namr = CharField(max_length=40)
    shirt_size = CharField(max_length=8)

serializer.data
{'id': 2, 'first_name': '1', 'shirt_size': '', 'last_namr': 'last'}


JSON->模型

代码

#得到一个json
data=serializer.data

#json变为字符串
from rest_framework.renderers import JSONRenderer
content=JSONRenderer().render(data)

#字符串转为二进制数据流
from django.utils.six import BytesIO
stream=BytesIO(content)

#转为JSONParse
from rest_framework.parsers import JSONParser
data = JSONParser().parse(stream)

#最后一个JSONParse到Model
data=CarSerializer(data=data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值