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)
          
      
  • 相关阅读:
    android:taskAffinity与android:finishOnTaskLaunch之我见
    Android 实现两屏幕互相滑动
    Android: 如何打开assets or raw文件夹下的数据库文件
    Android自定义进度条
    a标签在ie6下点了没反应
    strtotime 稍有不同
    php遍历时修改 传地址
    css3pie
    js 数据拷贝
    不重启iis的情况下切换iis的.net版本
  • 原文地址:https://www.cnblogs.com/-tender/p/13887637.html
Copyright © 2011-2022 走看看