MST

星途 面试题库

面试题:Python Django框架中RESTful API开发之序列化器问题

在Python的Django框架进行RESTful API开发时,使用Django REST framework,序列化器(Serializer)的作用是什么?请举例说明如何自定义一个序列化器,用来序列化一个模型类的数据,且只包含部分字段。
22.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

序列化器(Serializer)的作用

  1. 数据转换:将复杂的数据类型(如模型实例、查询集等)转换为Python原生数据类型(如字典),以便最终能够轻松地将其渲染为JSON、XML等前端可识别的格式,实现数据的传输。例如在API响应中,将数据库中获取的模型对象转换为适合网络传输的格式。
  2. 验证数据:在接收到前端发送的数据时,对数据进行验证,确保数据符合预期的格式和规则。比如验证用户注册时输入的邮箱格式是否正确等。
  3. 反序列化:将接收到的外部数据(如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()

现在我们要自定义一个序列化器,只包含titleauthor字段,使用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']。这样就完成了一个只包含部分字段的模型类数据序列化器的自定义。