Django Rest Framework:模型->JSON和JSON

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)
發佈了63 篇原創文章 · 獲贊 13 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章