Django基础教程(九十七)Django序列化之了解Serializers的工作方式:Django里的那位神秘“翻译官”:Serializer。

你有没有经历过这种抓马时刻?你辛辛苦苦从数据库里捞出来一个“模型对象”,想把它变成美味的JSON小饼干送给前端,结果前端小哥一脸懵逼地说:“哥,你这啥玩意儿?我咬不动啊!” 或者,前端送来一堆JSON数据,你想把它变成数据库里的正经“模型对象”,却发现它们根本对不上眼,气得你直拍桌子。

别急,这时候,就该咱们的“超级翻译官”——Django Serializer闪亮登场了!


第一章:相遇——那个叫“Serializer”的翻译官到底是谁?

想象一下,你是一个世界500强的CEO(对,就是我们码农),你的公司有两个部门:

  • 后端数据库部门:说的是一门叫“Python对象”的内部黑话,里面全是些像 <Article object (1)> 这样高大上但外人听不懂的术语。
  • 前端/移动端部门:说的是国际通用语言“JSON”,长这样:{"id": 1, "title": "Hello World"}

你作为CEO,日理万机,总不能天天亲自给这两个部门当翻译吧?这时候,你就需要雇佣一个专业的“翻译官”。

Serializer,就是Django世界里这位金牌翻译官。

它的工作简历非常清晰:

  1. 序列化(Serialization):当后端部门需要把数据传递给前端部门时,翻译官出场。它把内部黑话“Python对象”翻译成通用语言“JSON”。这个过程,就叫“序列化”。(出门见客,要打扮得体面)
  2. 反序列化(Deserialization):当前端部门提交数据给后端时,翻译官再次出场。它把通用语言“JSON”翻译成内部黑话“Python对象”,同时还要检查这份数据合不合规,有没有错别字。这个过程,就叫“反序列化”。(进门干活,要验明正身)
  3. 数据验证(Validation):这是翻译官最重要的“质检”功能。在把JSON数据变成对象之前,它会严格检查:标题有没有写?长度超没超?邮箱格式对不对?确保进来的都是“良民”,不会把你的数据库搞乱。

所以,简单粗暴的理解:Serializer = 序列化 + 反序列化 + 数据验证。 它就是连接D模型世界和JSON世界的桥梁!

第二章:相知——深度“解剖”Serializer的工作方式

光知道名号可不行,我们得深入了解一下这位翻译官的“工作流程”。它的工作方式,其实就藏在它名字背后的两个核心方法里:.data.is_valid()

1. 序列化流程:从“对象”到“JSON”(.data 的魔法)

当你想把一个或多个模型对象变成JSON时,流程是这样的:

# 1. 引入我们的翻译官,并告诉他翻译规则(定义一个Serializer)
from rest_framework import serializers
from .models import Article

class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = ['id', 'title', 'content', 'created_at']

# 2. 找到要翻译的对象(比如从数据库取出一篇文章)
article = Article.objects.get(id=1)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值