#-*- coding:utf-8 -*-
fromrest_frameworkimportserializers
from.modelsimportSnippet
from.modelsimportLANGUAGE_CHOICES,STYLE_CHOICES
classSnippetSerializer(serializers.Serializer):
"""
方法一:繼承自Serializer這個基礎序列器
顯式的定義創建一個Serializer類,在這個Serrializer類里面,對數據庫的每個字段都進行覆蓋
實現create,update,delete等方法
數據序列化用數據的方式:
serializer = SnippetSerializer(snippet)
serializer.data # 返回一個ReturnDict類型的list
content = JSONRender().render(serializer.data) # 把序列化后的數據變為Json數據
content # 此時的content就是一個json數據
反過來的操作:
from django.utils.six import BytesIO
stream = BytesIO(content)
data = JSONParser().parse(content)
serializer = SnippetSerializer(data=data)? #返回的數據是一個ReturnDict類型list
serializer.is_valide() 驗證是否是正確數據
serializer.validated_data 取到數據
serializer.save() 把數據保存成一個Snippet對象
"""
pk=serializers.IntegerField(read_only=True)
title=serializers.CharField(required=False,allow_blank=True,max_length=100)
code=serializers.CharField(style={'base_template':'textarea.html'})
linenos=serializers.BooleanField(required=False)
language=serializers.ChoiceField(choices=LANGUAGE_CHOICES,default='python')
style=serializers.ChoiceField(choices=STYLE_CHOICES, default='friendly')
defcreate(self, validated_data):
"""
如果數據合法,就創建并返回一個snippet實例
"""
returnSnippet.objects.create(**validated_data)
defupdate(self, instance, validated_data):
"""
@instance :
@validated_data:
如果數據合法,就更新并返回一個存在的snippet實例
"""
instance.title=validated_data.get('title',instance.title)
instance.code=validated_data.get('title',instance.title)
instance.linenos=validated_data.get('title',instance.title)
instance.language=validated_data.get('title',instance.title)
instance.style=validated_data.get('title',instance.title)
instance.save()
returninstance