DRF单表序列化和反序列化

DRF序列化和反序列化

  • 安装 djangorestframework

    pip install djangorestframework
    
  • 将rest_framework注册到app上

    INSTALLED_APPS = [
        'rest_framework',
        'app01'
        ....
    ]
    
  • urls

    from django.urls import path
    from . import views
    urlpatterns = [
        path('index/',views.UserView.as_view())
    ]
    
  • 在models.py

    from django.db import models
    
    # 用户
    class User(models.Model):
        name = models.CharField(max_length=32,unique=True,null=True)
    
  • 在 app01 文件下 新建 serializer.py

    from rest_framework import serializers
    from .models import User
    
    # 序列化
    class UserSerializers(serializers.ModelSerializer):
        
        class Meta:
            model = User
            fields = '__all__'
            
    # 反序列化        
    class UserUnSerializer(serializers.Serializer):
        name = serializers.CharField(max_length=32)
        password = serializers.CharField(max_length=255)
        
        # 添加数据
        def create(self,data):
            return User.objects.create(**data)
        
        # 更新数据
        def update(self,instance,data):
            return instance.update(**data)
        
    
  • 在 views

    from rest_framework.response import Response
    from rest_framework.views import APIView
    from . import models
    from .serializer import UserSerializers
    
    class UserView(APIView):
        
        def get(self,request):
        	user = models.User.objects.all()
            # 序列化 将对象转成json串
            data = UserSerializers(user,many=True)
            return Response(data)
        
         # 添加数据
        def post(self,request):
            name = request.POST.get('name','').strip()
            password = request.POST.get('password','').strip()
            dic = {"name":name,"password":password}
            user = UserUnSerializer(data=dic)
            if user.is_valid():
                user.save()
                return HttpResponse('post-ok')
            return HttpResponse('post-no')
    
        # 更新数据
        def put(self,request):
            id = request.POST.get('id','0')
            obj = models.User.objects.filter(id=id)
            name = request.POST.get('name','').strip()
            dic = {"name":name}
            user = UserUnSerializer(obj,data=dic)
            if user.is_valid():
                user.save()
                return HttpResponse('put-ok')
            return HttpResponse('put-no')
    
posted @   巫小诗  阅读(252)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示