day11-序列化器

1.普通序列化器

在我们进行增删改查时,将orm操作的数据转换为json数据。方便存储和辨别

1.1 编写方式

在models.py里写模型类

from django.db import models

# Create your models here.
class People(models.Model):
    name = models.CharField(max_length=20,verbose_name='姓名')
    sex = models.CharField(max_length=2,verbose_name='性别')
    class Meta:
        verbose_name = '人物表'
        verbose_name_plural = verbose_name
        db_table = 'people'
    def __str__(self):
        return self.name

在子应用下创建serializers文件,并导入模块

from rest_framework import serializers
from myapp.models import People
class PeopleSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=20)
    sex = serializers.CharField(max_length=2)

1.2 普通序列化器序列化

获取全部数据后面要用many=True,单个数据用 instance

class PeopleView(APIView):
    def get(self,request):
        # 获取所有任务信息
        people = People.objects.all()
        # 使用序列化器对数据进行序列化
        ser = PeopleSerializer2(people,many=True)
        return Response(ser.data,status=200)

1.3 普通序列化器反序列化创建

    #增加一个人的信息
    def post(self,request):
        # 使用序列化器,进行反序列化
        ser = PeopleSerializer2(data=request.data)
        # 判断反序列化是否成功
        # 如果出现异常raise_exception=True就会自动抛出异常
        if ser.is_valid(raise_exception=True):
            ser.save()
            return Response({'msg':'success'},status=201)
        return Response({'msg':'error'})

在serializers文件里重新配置create

    #新增数据调用create方法
    def create(self, validated_data):
        obj = People.objects.create(
            **validated_data
        )
        # 返回新生成的ORM对象
        return obj

1.4 普通序列化器反序列化更新

在serializers文件里重新配置update

    def update(self, instance, validated_data):
        instance.name = validated_data.get('name')
        instance.sex = validated_data.get('sex')
        instance.save()
        # 返回修改后的ORM对象
        return instance

在view.py里写put更新代码

    #修改一个人的信息
    def put(self,request,id):
        try:
            peo_data = People.objects.get(id=id)
        except Exception as e:
            print(e)
            # 数据不存在的状态码是404
            return Response({'msg':'error'},status=404)
        # instance=peo_data要修改的ORM对象
        ser = PeopleSerializer2(instance=peo_data,data=request.data)
        if ser.is_valid(raise_exception=True):
            # 保存
            ser.save()
            # 添加修改成功为201
            return Response({'msg': 'success'}, status=201)
        return Response({'msg': 'error'}, status=500)

1.2 模型序列化器

class PeopleSerializer2(serializers.ModelSerializer):
    class Meta:
        # 指定模型
        model = People
        # 指定映射字段
        fields = "__all__"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值