高频面试题-DRF-序列化-反序列化
Django-drf框架最大的亮点莫过于Serializer序列化器这个操作了, 它极大的简化了程序员在模型类和JSON数据格式之间转换的代码,节省了大量的时间和遍历。
接下来我们通过图文和代码的形式正确一遍就让各位对这个序列化和反序列化概念理解的通透哦!
序列化-概述
序列化这个概念是站在后端的角度, 以后端为主的思路梳理的, 后端将来需要将从Mysql数据库中查询出来的数据,按照接口文档的数据格式一般json格式居多返回给前端工程师, 前端工程师按照接口文档解析json数据渲染展示!
简而言之: 序列化过程是: 后端通过ORM框架从Mysql数据库查出数据转换成模型类对象-------> json数据格式
反序列化-概述
反序列化过程: 前端发送ajax请求-传递json数据-------->后端----将json数据转换成模型类对象
序列化实战
- 首先准备Django的用户模型类
from django.db import models
class Person(models):
name = models.CharField(max_length=30, verbose_name='狗名字')
age = models.IntegerField(verbose_name="年龄")
gender = models.BooleanField(default=True, verbose_name="性别")
2.准备根据用户模型类构建Serializer序列化器类
from rest_framework import serializers
class PersonSerializer(serializers.Serializer):
name = serializers.CharField(max_length=30, min_length=8)
age = serializers.IntegerField()
gender = serializers.BooleanField()
3.使用序列化器类进行序列化操作
# 1. 构建模型类数据
p_model = Person(name='laowang', age=88, gender=True)
# 2. 将 模型类数据----序列化----json数据
p_serializer = PersonSerializer(instance=p_model)
# 3.取出序列化完毕的 json数据
json_data = p_serializer.data
反序列化-实战
# 1. 构建 json数据
data_json = {
"name":"xiaowangba",
"age":18,
"gender":True
}
# 2. json数据----反序列化----模型类数据
p_serializer = PersonSerializer(data=data_json)
p_serializer.is_valid() #数据校验
p_serializer.save() # 模型类数据存储