首页 > 其他分享 >序列化器:序列化一个模型对象和多个模型对象

序列化器:序列化一个模型对象和多个模型对象

时间:2022-08-30 15:57:58浏览次数:62  
标签:serializers 对象 模型 instance import 序列化 data

1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串

2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型

3. 反序列化,完成数据校验功能

Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。

 

序列化器基本流程:

from rest_framework import serializers
from .models import Student

class StudentSerializer(serializers.Serializer):
    # 学生信息序列化器
    #1.转换的字段说明
    #客户端字段=serializers.字段类型(选项=选项值)

    #2.如果当前的序列化器集成的是ModelSerializer,需要声明调用的模型信息
    # class Meta:
    #     model = 模型
    #     fields = ["字段1","字段2","字段3",...]

    #3.验证代码的对象方法
    # def validate(self,attrs):#名字固定叫validate
    #     pass
    #     return attrs

    # def validate_<字段名>(self,data):#方法名必须是validate_<字段名>,否则序列化器不识别
    #     pass
    #     return data

    #4.模型操作的方法
    # def create(self,validate_data):#添加数据操作,自动实现从字典变成模型对象
    #     pass
    
    # def update(self,instance,validate_data):
    #     pass

序列化器:

  

from rest_framework import serializers
from .models import Student

class StudentSerializer(serializers.Serializer):
    #1.转换的字段说明
    id=serializers.IntegerField()
    name=serializers.CharField()
    sex=serializers.BooleanField()
    age=serializers.IntegerField()
    description=serializers.CharField()

视图:

  序列化一个对象:

  

from django.views import View
from .models import Student
from .serializers import StudentSerializer
from django.http.response import JsonResponse


class StudentView(View):
    def get(self,request):
        #序列化一个模型对象
        #1.获取数据集
        instance=Student.objects.first()
        #2.实例化序列化器,得到序列化对象
        serializer=StudentSerializer(instance=instance)
        #3.调用序列化对象的data属性获取数据
        data=serializer.data
        #4.响应数据
        return JsonResponse(data=data,status=200,safe=False)#返回结果是字典

  序列化多个对象:

 

from django.views import View
from .models import Student
from .serializers import StudentSerializer
from django.http.response import JsonResponse


class StudentView(View):
    def get(self,request):
        #序列化多个模型对象
        #1.获取数据集
        instance=Student.objects.all()
        #2.实例化序列化器,得到序列化对象
        #序列化包含多个数据的查询集QuerySet,添加参数many=True
        serializer=StudentSerializer(instance=instance,many=True)
        #3.调用序列化对象的data属性获取数据
        data=serializer.data
        #4.响应数据
        return JsonResponse(data=data,status=200,safe=False)#返回结果是字典

路由:

from django.urls import path
from . import views

# 路由列表
urlpatterns = [
    path("students/",views.StudentView.as_view()),
]

 

  

标签:serializers,对象,模型,instance,import,序列化,data
From: https://www.cnblogs.com/fuck-Innovative-training/p/16638874.html

相关文章

  • 序列化与反序列化
    1.参与序列化的对象必须实现Serializable接口,起到相应的标识作用,Java虚拟机会给该类自动生成一个序列化版本号2.java通过类名+序列化版本号的方式进行区分,transient关......
  • Java 对象和类, 变量类型,构造方法,创建对象,实例,源文件申明规则
    Java作为一种面向对象语言。支持以下基本概念:多态继承封装抽象类对象实例方法重载对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个......
  • 阅读《计算机图形学编程(使用OpenGL和C++)》11 - 加载外部obj模型
    复杂的3D模型可以借助建模工具生成,这种工具能够在3D空间中构建任意形状并自动生成顶点、纹理坐标、顶点法向量等。模型生成后可导出成obj文件格式,这种格式有很多,OBJ文件很......
  • 如何估算transformer模型的显存大小
    在微调GPT/BERT模型时,会经常遇到“cudaoutofmemory”的情况。这是因为transformer是内存密集型的模型,并且内存要求也随序列长度而增加。所以如果能对模型的内存要求进......
  • go语言数据I/O对象及操作
    概念在Go语言中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心。在实际开发过程中,无论是实现web应用程序,还是控制台输入输出,又或者是网络操作,都不......
  • [CISCN2019 华北赛区 Day1 Web2]ikun-1|python反序列化
    考点:JWT身份伪造、pythonpickle反序列化、逻辑漏洞1、打开之后首页界面直接看到了提示信息,信息如下:2、那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看......
  • python之面向对象
    面向对象本质:将特定的数据与特定的功能绑定到一起将来只能彼此相互使用对象其实就是一个容器里面将数据和功能绑定到一起使用场景一:​ eg:游戏人物......​ ......
  • 时间序列分析 (4) — ARIMA 模型:ACF、PACF
    时间序列分析(4)—ARIMA模型:ACF、PACF在上一篇文章中,我们谈到了AR,MA模型,今天我们将研究ARIMA和ARMA模型,它们是由AR和MA模型组成的。自相关函数(ACF)平稳条件,特征......
  • 你好大语言模型
    你好大语言模型使用GoogleColab首次涉足Bloom作为我的硕士课程Capstone项目的一部分,我将探索如何实现大型语言模型(LLM)。我确信这种探索会产生许多博客文章,但对......
  • El_获取域中存储的值和El_获取域中存储的值_对象值
    2获取值1.el表达式只能从域对象中获取值2语法:1.$[域名称.键}:从指定域中获取指定键的值域名称:1.pageScope2.requestScope3.sessionScope4.applicationScope-->举例:在req......