Django序列化器

django序列化器基础代码如下:

models.py:

class Classroom(models.Model):
    class_name = models.CharField(max_length=64)
    address = models.CharField(max_length=64)

    class Meta:
        db_table = 'pp_classroom'

    def __str__(self):
        return self.class_name

serializers.py:

class ClassroomSer(serializers.Serializer):
    class_name = serializers.CharField(max_length=64, verbose_name='班级名称')
    address = serializers.CharField(max_length=64, verbose_name='班级地址')

    def create(self, validated_data):
        return Classroom.objects.create(**validated_data)

    def update(self, instance, validated_data):
        instance.class_name = validated_data.get('class_name', instance.class_name)
        instance.address = validated_data.get('address', instance.address)
        instance.save()
        return instance

    # def validate(self, attrs):
    #     if attrs.get('address') != '河南':
    #         raise serializers.ValidationError('教室不在河南')
    #     return attrs

views.py:

from rest_framework.pagination import PageNumberPagination  # 分页


class PageNum(PageNumberPagination):
    # 查询字符串中代表每页返回数据数量的参数名,默认值:None
    page_size_query_param = 'max_page'
    # 查询字符串中代表页码的参数名,有默认值:page
    page_query_param = 'page'
    # 一页中最多的结果条数
    max_page_size = 5


class ClassroomView(APIView):
    def post(self, request):
        # class_name = request.data.get('class_name')
        # address = request.data.get('address')
        data = request.data
        # print(data)
        class_obj = ClassroomSer(data=request.data)
        # print(class_obj)
        if class_obj.is_valid():
            class_obj.save()
            return Response({'data': data, 'msg': '添加成功'})
        else:
            return Response({'msg': '数据不合法'})

    def get(self, request):
        class_obj = Classroom.objects.all()
        paginator = PageNum()
        result_page = paginator.paginate_queryset(class_obj, request)
        class_ser = ClassroomSer(result_page, many=True)
        return Response(class_ser.data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值