面试题答案
一键面试序列化器(Serializer)的作用
- 数据转换:将复杂的数据类型(如模型实例、查询集等)转换为Python原生数据类型(如字典),以便最终能够轻松地将其渲染为JSON、XML等前端可识别的格式,实现数据的传输。例如在API响应中,将数据库中获取的模型对象转换为适合网络传输的格式。
- 验证数据:在接收到前端发送的数据时,对数据进行验证,确保数据符合预期的格式和规则。比如验证用户注册时输入的邮箱格式是否正确等。
- 反序列化:将接收到的外部数据(如JSON格式数据)转换回模型实例,以便进行数据库存储等操作。
自定义序列化器示例
假设我们有一个Book
模型类,如下:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
publication_date = models.DateField()
现在我们要自定义一个序列化器,只包含title
和author
字段,使用Django REST framework可以这样做:
from rest_framework import serializers
from.models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['title', 'author']
在上述代码中,通过继承serializers.ModelSerializer
,我们快速创建了一个序列化器。Meta
类中指定了要序列化的模型Book
以及要包含的字段['title', 'author']
。这样就完成了一个只包含部分字段的模型类数据序列化器的自定义。