Django中序列化与反序列化

1:序列化:

将数据结构或对象状态转换为可以存储或传输的格式(如JSON、XML)的过程。

在Web开发中,通常是将模型实例(或查询集)转换为JSON格式,

以便通过HTTP响应发送给客户端。

序列化(Serialization):

将 复杂数据类型(如 Django 模型实例/查询集) → 转换为 可传输/存储的格式 (如 JSON、XML)。
核心目的:将数据转换为客户端可读的格式(如 API 响应)。

实现方式:

Django REST Framework (DRF)(推荐):

python 复制代码
from rest_framework import serializers

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['id', 'title', 'author']  # 指定字段

# 序列化模型实例
book = Book.objects.get(id=1)
serializer = BookSerializer(book)
json_data = serializer.data  # 输出: {'id':1, 'title':'Django Guide', 'author':'Alice'}

2. 反序列化(Deserialization):

将 客户端传入的数据(如 JSON) → 转换为 Django 模型实例/复杂数据类型 。
核心目的:验证并转换数据供服务端使用(如创建/更新数据库记录)。

DRF 反序列化(带数据验证):

python 复制代码
# 客户端传入的 JSON 数据
incoming_data = {'title': 'New Book', 'author': 'Bob'}

# 1. 验证数据 + 转换为模型实例
serializer = BookSerializer(data=incoming_data)
if serializer.is_valid():  # 验证数据是否符合规则
    book_instance = serializer.save()  # 创建/更新模型实例
else:
    errors = serializer.errors  # 获取错误信息

# 2. 更新现有实例
book = Book.objects.get(id=1)
serializer = BookSerializer(book, data=incoming_data, partial=True)  # partial=True 允许部分更新
相关推荐
xiaogai_gai4 分钟前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
benchmark_cc30 分钟前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu43 分钟前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
团子哒哒1 小时前
数组、切片和Map
后端
专注仿真1 小时前
ThinkPHP6 API接口开发实例:从零搭建RESTful风格接口
后端·php·restful
开心猴爷1 小时前
应对iOS审核4.3:可以使用 IpaGuard 来给属性名混淆的技术细节与平衡之道
后端·ios
1m555555551 小时前
RAG 工程实战(五):正确知识已经进入 Prompt,为什么大模型还是会答错?
后端·面试
易小尊1 小时前
我的模型在 65% 以上时准得可怕,在 50% 时像在掷硬币
后端
用户2788607285671 小时前
fallback 会盖掉平台提示词:system、空数组和 systemAppend 的差别
前端·后端
iOS开发上架哦1 小时前
iOS应用耗电测试:使用Energy Log、Keymob和Instruments进行性能监控与能源消耗分析
后端·ios