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)