你有没有经历过这种抓马时刻?你辛辛苦苦从数据库里捞出来一个“模型对象”,想把它变成美味的JSON小饼干送给前端,结果前端小哥一脸懵逼地说:“哥,你这啥玩意儿?我咬不动啊!” 或者,前端送来一堆JSON数据,你想把它变成数据库里的正经“模型对象”,却发现它们根本对不上眼,气得你直拍桌子。
别急,这时候,就该咱们的“超级翻译官”——Django Serializer闪亮登场了!
第一章:相遇——那个叫“Serializer”的翻译官到底是谁?
想象一下,你是一个世界500强的CEO(对,就是我们码农),你的公司有两个部门:
- 后端数据库部门:说的是一门叫“Python对象”的内部黑话,里面全是些像
<Article object (1)>这样高大上但外人听不懂的术语。 - 前端/移动端部门:说的是国际通用语言“JSON”,长这样:
{"id": 1, "title": "Hello World"}。
你作为CEO,日理万机,总不能天天亲自给这两个部门当翻译吧?这时候,你就需要雇佣一个专业的“翻译官”。
Serializer,就是Django世界里这位金牌翻译官。
它的工作简历非常清晰:
- 序列化(Serialization):当后端部门需要把数据传递给前端部门时,翻译官出场。它把内部黑话“Python对象”翻译成通用语言“JSON”。这个过程,就叫“序列化”。(出门见客,要打扮得体面)
- 反序列化(Deserialization):当前端部门提交数据给后端时,翻译官再次出场。它把通用语言“JSON”翻译成内部黑话“Python对象”,同时还要检查这份数据合不合规,有没有错别字。这个过程,就叫“反序列化”。(进门干活,要验明正身)
- 数据验证(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)

最低0.47元/天 解锁文章
874

被折叠的 条评论
为什么被折叠?



