除了昨天介绍的 Viewset ,有另外一个大家不太熟悉但是看似又非常强大的 class,就是 Serializers 了吧。今天带大家来了解一下 Serializers 。
Serializers 的功用,像是 Django 里面 Form 的作用,将资料进行序列化,让资料库与资料库可以进行传输。
像是我们可以定义 Serializers 如下:
class ProductSerializer(serializers.Serializer):
uploader= serializers.CharField()
name = serializers.CharField()
status = serializers.CharField()
description = serializers.CharField()
view = serializers.IntegerField()
price = serializers.IntegerField()
def create(self, validated_data):
print(validated_data)
return Product.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.uploader = validated_data.get('uploader', instance.uploader)
instance.name = validated_data.get('name', instance.name)
instance.status = validated_data.get('status', instance.status)
instance.description = validated_data.get('description',
instance.description)
instance.view = validated_data.get('view', instance.view)
instance.price = validated_data.get('price', instance.price)
instance.save()
return instance
透过 serializers 进行资料的处理及序列化。
modelserializer 则将常使用於 Model 的沟通集结成 一个 class
使用方法:
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ['id', 'name', 'uploader', 'price']
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
exclude = [ 'uploader', 'price']
透过 Serializers , ModelSerializers 可以处理 Model 资料的沟通。不同的资料类型以及用途可以使用不同的 Seriazers 像是,HyperlinkedModelSerializer, ListSerializer, BaseSerializer 等等。越是了解其用途及特色,越能发挥 Serializers 强大的威力。
参考资料:
https://www.django-rest-framework.org/api-guide/serializers/#serializers
https://www.django-rest-framework.org/api-guide/serializers/#modelserializer
>>: [Day 18] - 初探永丰银行线上收款API - 丰收款 - 建立订单!
Stacking Context 定义 Stacking Context是指对於HTML元素而言,有...
JavaScript最常使用在网页上,所以基本上所有浏览器都可以用来执行JavaScript程序。 ...
只要谈到AWS资安议题绝对不能不提到 AWS Shared Responsibility Model...
由於没有发布紧急事态宣言 但是为了救旅游业却推出了旅游补助方案(goto キャンペーン) 当时候的...
在後续章节里,我们将使用 IntelliJ IDEA 示范如何编辑 Gradle 的 Build S...