django restful framework序列化与反序列化

在前后端分离开发中,对于RESTfulAPI设置,一般需要将查询/更新数据以JSON方式进行返回。

序列化

Model.py

python 复制代码
from django.db import models
class User(models.Model):
    username = models.CharField(verbose_name='用户名',max_length=10)
    age = models.IntegerField(verbose_name='年龄')
    email = models.CharField(verbose_name='邮箱',max_length=20)

View.py

python 复制代码
from api.models import User
from  api.models import userSerializer
class userView(APIView):
    def get(self,request):
        queryset = User.objects.all()
        # 序列化
        res = userSerializer(instance=queryset, many=True)
        return Response({'code':200,'msg':'ok','data':res.data})

Url.py

python 复制代码
from . import views
from django.urls import path

urlpatterns = [
    path("user/",views.userView.as_view())
]

1.序列化器类(Serializer)

python 复制代码
from rest_framework import serializers
class userSerializer(serializers.Serializer):
     username = serializers.CharField()
     age = serializers.CharField()
     email = serializers.CharField()

2.序列化器类(ModelSerializer)

python 复制代码
from rest_framework import serializers
class userSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

postman测试get方法

反序列化

DRF序列化器可以将来自客户端的请求数据(通常是JSON数据)转换为Python对象,以便在视图中进行处理。

python 复制代码
from api.models import User
from  api.models import userSerializer
class userView(APIView):

    def post(self,request):
        # 反序列化
        serializer = userSerializer(data=request.query_params)
        # 如果验证成功
        if serializer.is_valid():
            serializer.save()
            return Response({'code': 200, 'msg': 'ok'})
        else:
            return Response({'code': 201, 'msg': 'error'})

postman测试post方法

相关推荐
blues_C2 天前
十三、【核心功能篇】测试计划管理:组织和编排测试用例
vue.js·django·测试用例·drf·测试平台
恸流失2 天前
DJango项目
后端·python·django
编程大全2 天前
41道Django高频题整理(附答案背诵版)
数据库·django·sqlite
网安小张3 天前
解锁FastAPI与MongoDB聚合管道的性能奥秘
数据库·python·django
KENYCHEN奉孝3 天前
Pandas和Django的示例Demo
python·django·pandas
老胖闲聊3 天前
Python Django完整教程与代码示例
数据库·python·django
noravinsc3 天前
django paramiko 跳转登录
后端·python·django
践行见远3 天前
django之请求处理过程分析
数据库·django·sqlite
声声codeGrandMaster3 天前
Django之表格上传
后端·python·django
菌菌的快乐生活3 天前
网站静态文件加速-Django项目静态文件存储到腾讯云COS存储提升网络请求速度
django·cos存储