PyCharm普通序列化方法 添加和渲染数据

发布于:2022-12-17 ⋅ 阅读:(389) ⋅ 点赞:(0)

在子应用中创建seri序列化器

from .models import *
class DepsSeri(serializers.Serializer):
    # 部门序列化器
    # read_only:只能读取用于序列化
    id = serializers.IntegerField(read_only=True)
    name = serializers.CharField(max_length=30)

    def create(self,validated_data):
        '''添加
        **:不定长参数
        *args: 接受的是列表或元组形式的参数
        **kwargs:代表接受字典类型的参数
        '''
        print('**validated_data>>>>',**validated_data)
        # 向数据库添加
        obj = Department.objects.create(
            **validated_data
        )
        return obj

在视图View中使用序列化器

使用序列化器 添加数据 ↓

class DepartmentView(APIView):

    def post(self,request):
        ser = DepsSeri(data=request.data)
        if ser.is_valid():
            # 此时说明校验成功
            ser.save()
            return Response({
                'code': 200,
                'msg': "添加成功"
            })
        # 校验成功写入数据库
        else:
            print("参数校验失败的原因是>>>>",ser.errors)
            return Response({
                'code':200,
                'msg':"校验成功"
            })

使用序列化器 渲染数据

class DepartmentView(APIView):
    def get(self,request):
        """获取所有的部门"""
        deps_data = Department.objects.all()
        # 序列化输出
        # 手动序列化
        deps_list = [{'id':i.id,'name':i.name} for i in deps_data]
        return Response({
            'code':200,
            'msg':"获取成功",
            'data':deps_list
        })

用普通方法添加数据

class DepartmentView(APIView):
    def post(self,request):
        department_name = request.data.get('name')
        try:
            Department.objects.get(name=department_name)
            return Response({
                'code':400,
                'msg':"部门已成立"
            })
        except Exception as e:
            print(e)
            Department.objects.create(name=department_name)
            return Response({
                'code':201,
                'msg':"部门成立成功"
            })


网站公告

今日签到

点亮在社区的每一天
去签到