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 允许部分更新
相关推荐
墨理学AI1 小时前
一文学会一点python数据分析-小白原地进阶(mysql 安装 - mysql - python 数据分析 - 学习阶段梳理)
python·mysql·数据分析
爱装代码的小瓶子1 小时前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端
数研小生1 小时前
亚马逊商品列表API详解
前端·数据库·python·pandas
独好紫罗兰1 小时前
对python的再认识-基于数据结构进行-a005-元组-CRUD
开发语言·数据结构·python
程序员良许1 小时前
嵌入式处理器架构
后端·单片机·嵌入式
MrSYJ1 小时前
Redis 做分布式 Session
后端·spring cloud·微服务
Cache技术分享1 小时前
318. Java Stream API - 深入理解 Java Stream 的中间 Collector —— mapping、filtering 和 fla
前端·后端
jianghua0011 小时前
Python中的简单爬虫
爬虫·python·信息可视化
喵手1 小时前
Python爬虫实战:针对Python官网,精准提取出每一个历史版本的版本号、发布日期以及对应的文档/详情页链接等信息,并最终清洗为标准化的CSV文件!
爬虫·python·爬虫实战·零基础python爬虫教学·python官方数据采集·采集历史版本版本号等信息·导出csv文件
Elieal2 小时前
SpringBoot 数据层开发与企业信息管理系统实战
java·spring boot·后端