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

相关推荐
markfeng84 天前
Python+Django+H5+MySQL项目搭建
python·django
QQ4022054965 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
百锦再5 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
starlaky5 天前
Django入门笔记
笔记·django
QQ5110082855 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe5 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
B站计算机毕业设计超人5 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长5 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人5 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
B站_计算机毕业设计之家5 天前
电影知识图谱推荐问答系统 | Python Django系统 Neo4j MySQL Echarts 协同过滤 大数据 人工智能 毕业设计源码(建议收藏)✅
人工智能·python·机器学习·django·毕业设计·echarts·知识图谱