serializer.py
# 声明序列化器
from rest_framework import serializers
# 所有的自定义序列化器必须直接或间接的继承与 serializers.Serializer
class StudentSerializer(serializers.Serializer):
# 1. 字段声明 [ 要转换的字段,如果写了第二部分代码,有时候也可以不写字段声明 ]
id = serializers.IntegerField()
name = serializers.CharField()
age = serializers.IntegerField()
sex = serializers.CharField()
# 2. 可选 [ 如果序列化器继承的是ModelSerializer,则需要声明对应的模型和字段 ]
# 3. 可选 [ 用于对客户端提交的数据校验 ]
# 4. 可选 [ 用于把通过校验的数据进行数据库操作,保存到数据库 ]
views.py
from django.http import JsonResponse
from django.views import View
from drf.models import Student
from .serializer import StudentSerializer
class StudentView(View):
'''
使用序列化器进行数据序列化操作
序列化器转换数据[ 模型转换为字典 ]
'''
def get(self, request, id):
# 接收参数
student = Student.objects.get(id=id)
# 转换数据格式
# 1. 实例化序列化器
# StudentSerializer(模型对象或模型列表, 客户端提交的数据, 额外要传递到序列化器中使用的数据)
# 如果有多个模型对象参数,则必须声明many=True
serializer = StudentSerializer(student)
# 2. 获取序列化器转换结果
print(serializer.data)
return JsonResponse(serializer.data)