Python - Django 序列化

序列化,也是就服务端响应客户端的内容,是从数据库中读取数据出来。因为数据库中的内容往往都是准确的,所以不需要复杂的校验过程。相对于反序列化而言,序列化的操作是十分简单的。

序列化的步骤为:

先查询出一个学生对象。从视图 views.py 中获取模型对象:

from students.models import Student

student = Student.objects.get(id=3)

构造序列化器对象:

from .serializers import StudentSerializer

serializer = StudentSerializer(instance=student)

获取序列化数据,通过 data 属性可以获取序列化后的数据。

serializer.data
# 其结果为:
{'id': 4, 'name': '小张', 'age': 18, 'sex': True, 'description': '猴赛雷'}

查询单条数据的完整视图代码:

from django.views import View
from students.models import Student
from .serializers import StudentSerializer
from django.http.response import JsonResponse
class StudentView(View):
    """使用序列化器序列化转换单个模型数据"""
    def get(self,request,pk):
        # 获取数据
        student = Student.objects.get(pk=pk)
        # 数据转换[序列化过程]
        serializer = StudentSerializer(instance=student)
        print(serializer.data)
        # 响应数据
        return JsonResponse(serializer.data)

如果要被序列化的是包含多条数据的查询集 QuerySet,可以通过添加 many=True 参数补充说明,查询多条数据的完成代码:

"""使用序列化器序列化转换多个模型数据"""
def get(self,request):
    # 获取数据
    student_list = Student.objects.all()

    # 转换数据[序列化过程]
    # 如果转换多个模型对象数据,则需要加上many=True
    serializer = StudentSerializer(instance=student_list,many=True)
    print( serializer.data ) # 序列化器转换后的数据

    # 响应数据给客户端
    # 返回的json数据,如果是列表,则需要声明safe=False
    return JsonResponse(serializer.data,safe=False)


# 访问结果:
[OrderedDict([('id', 1), ('name', 'xiaoming'), ('age', 20), ('sex', True), ('description', '测试')]), OrderedDict([('id', 2), ('name', 'xiaohui'), ('age', 22), ('sex', True), ('description', '后面来的测试')]), OrderedDict([('id', 4), ('name', '小张'), ('age', 18), ('sex', True), ('description', '猴赛雷')])]
展开阅读全文

页面更新:2024-04-13

标签:视图   服务端   客户端   模型   对象   过程   代码   测试   内容   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top