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

相关推荐
__淡墨青衫__3 小时前
Django之旅:第七节--模版继承
数据库·django·sqlite
橘猫云计算机设计4 小时前
net+MySQL中小民营企业安全生产管理系统(源码+lw+部署文档+讲解),源码可白嫖!
数据库·后端·爬虫·python·mysql·django·毕业设计
懵逼的小黑子7 小时前
django.db.utils.OperationalError: (1050, “Table ‘你的表名‘ already exists“)
django
Bruce-li__7 小时前
使用Django REST Framework快速开发API接口
python·django·sqlite
小兜全糖(xdqt)7 小时前
python 脚本引用django中的数据库model
python·django
シ風箏7 小时前
Django【应用 01】django-plotly-dash安装及使用
plotly·django·dash
小杰love编程11 小时前
Django 入门指南:构建强大的 Web 应用程序
前端·django·sqlite
俺的图图呢?12 小时前
Django笔记——CSRF
笔记·django·csrf
唐僧洗头爱飘柔952713 小时前
(Go Gin)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
后端·golang·go·restful·gin·goweb开发
BXCQ_xuan14 小时前
Django API 响应格式:一个新手踩坑记
python·django·状态模式