zoukankan      html  css  js  c++  java
  • DRF使用Serializer来进行序列化和反序列化操作

    1. serializer.py中的代码

      from rest_framework import serializers
      from .models import *
      
      class UserSerializers(serializers.Serializer):
          
          username = serializers.CharField(max_length=64)
          
          age = serializers.IntegerField(allow_null=True)
          
          home = serializers.CharField(max_length=64)
          
          def create(self, validated_data):
              
              return User.object.create(**validated_data)
          
          def update(self, instance, validated_data):
              # instance 数据库里的模型
              # validated_data 传进来要修改的数据
              
              instance.username = validated_data.get('username', instance.username)
              
              instance.age = validated_data.get('age', instance.age)
              
              instance.home = validated_data.get('home', instance.home)
              
              instance.save()
              return instance
      
    2. views.py中的代码

      # 用户接口
      class UserView(APIView):
          
          # 查看
          def get(self, request):
          
              users = User.objects.all()
      
              ser = UserSerializer(users, many=True)
      
              data = ser.data
      
              return Response(data)
      	# 添加
          def post(self, request):
              
              data = request.data
              
              ser = UserSerializer(data=data)
              
              if ser.is_valid():
                  
                  ser.save()
                  
                  return Response({'msg': '添加成功', 'code': 200})
              else:
                  print(ser.errors)
      	# 修改
          def put(self, request):
              
              data = request.data
              
              user = User.objects.get(id=1)
              
              ser = UserSerializer(user, data=data)
              
              if ser.is_valid():
                  
                  ser.save()
                  
                  return Response({'msg': '修改成功', 'code': 200})
              else:
                  print(ser.errors)
                  
      	# 删除
          def delete(self, request):
              
              uid = request.data.get('id')
              
              user = User.objects.filter(pk=uid).first()
              
              if user:
                  user.delete()
                  return Response({'msg': '删除成功', 'code': 200})
              else:
                  print(user.errors)
          
      
  • 相关阅读:
    CF1394A Boboniu Chats with Du 题解
    P3377 【模板】左偏树(可并堆)题解
    P2152 [SDOI2009]SuperGCD 题解
    在其他模块中调用代码
    教程:创建Go模块
    Go入门
    反悔贪心
    codeforces 1569 E. Playoff Restoration (meet-in-the-middle)
    codeforces 1036 F. Relatively Prime Powers (容斥+精度处理+大数边界处理)
    icpc沈阳2020 H. The Boomsday Project (dp+二分)
  • 原文地址:https://www.cnblogs.com/-tender/p/13887637.html
Copyright © 2011-2022 走看看