• django自带的序列化组件


    1.什么是序列化组件

    在django中,自带一个序列化组件,它是用来将数据进行整理、转化成特定的为一个特定的格式(比如json数据格式),然后传输给前端,以便前端对数据进行处理操作。

    2.为什么要用序列化组件

    当我们从数据库取出一些数据时,我们需要将数据转成特定的格式,比如列表套字典的形式,然后将这些数据序列化成json的格式传输给前端,这就需要我们在后端把数据库里的数据每一个都遍历取值出来,这样比较麻烦,而且当数据字段很多的时候,我们很多遍历出来!代码如下:

    后端代码:

    from django.http import JsonResponse   # 导入JsonResponse模块
    from app01 import models
    
    def ab_ser(request):
        user_queryset = models.User.objects.all()  # 查询所有的数据对象
        user_list = []   # 创建一个空列表
        for user_obj in user_queryset:   # 循环出每一个数据对象
            tmp = {       # 利用对象点的方式取出每一个对应元素来充当字段的值
                'pk':user_obj.pk,
                'username':user_obj.username,
                'age':user_obj.age,
                'gender':user_obj.gender
            }
            user_list.append(tmp)   # 添加到列表中
        return JsonResponse(user_list, safe=False)   # 转换成json格式返回给前端页面(safe属性为ture则表示只能传dict字典的形式,因为现在为列表的形式,所以改为False)
    

    前端代码:

    <body>
    {% for user_obj in user_list %}
        <p>{{ user_obj }}p>
    {% endfor %}
    body>
    

    所以,这时候django给我们提供了一个自带的序列化组件,它能够将从数据库取出的数据,自动整合成一个特定的格式!大大减少了我们的工作!

    3.django自带的序列化组件

    自带的序列化模块为serializes

    # 格式:serializers.serialize('序列化成什么格式',数据)
    # 示例:
    
    from django.core import serializers   # 导入
    
    def ab_ser(request):
        user_queryset = models.User.objects.all()
        res = serializers.serialize('json',user_queryset)  # 序列化成json格式数据
            """会自动帮你将数据变成json格式的字符串 并且内部非常的全面"""
        return HttpResponse(res)  # 返回给前端页面
    
    '''
    
    [{"model": "app01.user", 
    "pk": 1, 
    "fields": {"username": "gary", "age": 19, "gender": 1}}, 
    
    {"model": "app01.user", 
    "pk": 2, 
    "fields": {"username": "tom", "age": 20, "gender": 2}},
    
    {"model": "app01.user", 
    "pk": 3, 
     "fields": {"username": "kevin", "age": 29, "gender": 3}}, 
     
     {"model": "app01.user", 
     "pk": 4,
     "fields": {"username": "jack", "age": 38, "gender": 4}}]
    
    '''
    
    # 我们可以看到它帮我们处理的数据是非常全面的,
    # 告诉了我们这个数据来自于哪一个应用下的拿一张表,还告诉了我们对应的主键值,和详细信息
    
  • 相关阅读:
    Redis -- 主从
    【回溯算法】leetcode 17. 电话号码的字母组合
    Docker 容器里安装ssh和连接ssh
    十一、Spring Boot 整合 WebSocket(1)
    Android UI freeze分析
    智能反射面辅助的海洋物联网技术综述
    浅记录一下MATLAB安装心得
    Redis -- 基础知识1
    高中物理:力、物体和平衡
    [计算机网络] VPN技术
  • 原文地址:https://www.cnblogs.com/suncolor/p/16584554.html