シリアライザシリアライザ
処置:データのシリアライズとデシリアライズ
例1オブジェクトのシリアル化機能、データ・ディクショナリに
保存された2直列化復元データチェックデータ(新規または更新)
定義されたシリアライザ
クラスを定義するために使用シリアライザジャンゴRESTフレームワークで定義されたメソッドから継承しなければなりませんrest_framework.serializers.Serializer
。
例えば、我々はすでにデータベースモデルクラスを持っています
class BookInfo(models.Model):
btitle = models.CharField(max_length=20, verbose_name='名称')
bpub_date = models.DateField(verbose_name='发布⽇期', null=True)
bread = models.IntegerField(default=0, verbose_name='阅读量')
bcomment = models.IntegerField(default=0, verbose_name='评论量')
image = models.ImageField(upload_to='booktest', verbose_name='图⽚', null=True)
私たちは、このモデルクラスのシリアライザを提供したい、次のように定義することができます。
from rest_framework import serializers
class BookInfoSerializer(serializers.Serializer):
"""图书数据序列化器"""
id = serializers.IntegerField(label='ID', read_only=True)
btitle = serializers.CharField(label='名称', max_length=20)
bpub_date = serializers.DateField(label='发布日期', required=False)
bread = serializers.IntegerField(label='阅读量', required=False)
bcomment = serializers.IntegerField(label='评论量', required=False)
image = serializers.ImageField(label='图片', required=False)
注:クラス定義のシリアライザデータベースモデルだけでなく、あなたはまた、非データベースのデータモデルクラスを定義することができます。シリアライザは、データベースが存在する唯一の外にあります。
2.フィールドとオプション
一般的なフィールドタイプ
3.良いシリアライザシリアライザクラスオブジェクト定義を作成し、あなたはシリアライザのオブジェクトを作成することができます。
シリアライザコンストラクタメソッド:
Serializer(instance=None, data=empty, **kwarg)
説明:
モデル・クラス・オブジェクト・インスタンスの配列が渡された1)
デシリアライゼーション、データパラメータへのデータのための)2をデシリアライズします
シリアライザオブジェクトデータを構成する場合3)データやパラメータのインスタンスに加えて、のような追加のコンテキストパラメータを介して添加してもよいです
serializer = AccountSerializer(account, context={'request': request})
追加のコンテキストによってパラメータデータは、オブジェクトコンテキスト属性シリアライザによって取得することができます