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方法

相关推荐
一线大码1 天前
Smart-Doc 的简单使用
java·后端·restful
摇滚侠2 天前
SpringMVC 入门到实战 RESTFul 49-55
java·开发语言·后端·spring·intellij-idea·restful
码云骑士2 天前
31-慢查询排查全流程(上)-Django-Debug-Toolbar与EXPLAIN入门
后端·python·django
龙腾AI白云2 天前
数字孪生和世界模型,二者的技术边界正在慢慢融合吗?
人工智能·django·知识图谱
码云骑士2 天前
30-在线图书管理系统-Django从零搭建到上线部署完整实战
后端·python·django
摇滚侠2 天前
SpringMVC 入门到实战 RESTFul 案例 56-63
java·开发语言·后端·spring·restful
2601_961875243 天前
花生十三资源盘|电子版|全科
python·django·flask·virtualenv·scikit-learn·pygame·tornado
码云骑士3 天前
28-Docker部署Django(下)-docker-compose编排与静态文件处理
docker·容器·django
码云骑士3 天前
23-Django-ORM的N+1问题-select_related与prefetch_related详解
后端·python·django
摸摸芋3 天前
Django框架(1)
后端·python·django