背景:
通过django model创建的数据表中有时间字段,前后端采用的是json格式进行数据返回,因为 model.objects 返回的是对象,需要将对象转换为list,再进行 JsonResponse 返回前端。
但是发现 时间字段中 会多一个T,2022-11-12T 12:13 不符合展示形式。

解决办法:
通过查询得知有两种解决办法
1、 通过django的 序列化组件 serializer对queryset/model 进行序列化,转换成json格式
2、在json中新增函数,对时间进行处理
综合考虑,采用 django的序列化组件 serializer

一、 序列化组件的作用

前后端通常是通过json格式进行数据传递,但是json序列化不能序列化对象,而序列化组件,可以自定义特定结构把对象序列化返回给前端,同时可以对前端传入的参数进行数据校验等功能

二、序列化组件字段注释

# 1.read_only read_only=True 表示不允许用户自己上传,只能用于api的输出,序列化的时候也不用对这个数据进行验 证,序列化返回是有改字段
# 2.write_only write_only=True 表示在更新或创建实例时可以使用该字段,但在序列化返回时不包括该字段。
# 3.required:该字段是必需的,不能为空 required=True 反序列化(前端返回数据必须包含此字段)的时候必须提供这个字段设置False可以不提供
# 4.allow_null/allow_blank:该字段允许为null/空 allow_null=True可以为null设置False则不能为null
# 5.label:标签,用于对字段显示设置
# 6.help_text:对字段进行解释的一段文本,用于提示
# 7.style:说明字段的类型 # 8.error_messages:字段出错时,信息提示

三、序列化组件的基本使用

model.py

from django.db import models# Create your models here.class Project(models.Model):id = models.AutoField(primary_key=True)name = models.CharField('名称', max_length=50, unique=True, null=False)create_time = models.DateTimeField('创建时间', default=timezone.now)# 打印对象时返回项目名称def __str__(self):return self.nameclass Meta:verbose_name = '项目信息表'verbose_name_plural = '项目信息表'

serializer.py

from rest_framework.serializers import Serializer
from rest_framework import serializersclass ProjectSerializer(Serializer):id = serializers.IntegerField()name = serializers.CharField()create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')

view.py

from . import models
from . import serializers
from django.http import JsonResponsedef get_books(request):project_list = models.Project.objects.filter().order_by('-id')se = serializers.ProjectSerializer(project_list , many=True)return JsonResponse(se.data, safe=False)

返回结果:

{"id": 1,"name": "xxx","create_time": "2022-01-21 17:18:18",}

django 序列化组件Serializer相关推荐

  1. 1. DRF 序列化组件

    0. 环境创建 * 1. 新建一个项目 * 2. 修改 tempaltes路径问题 # 修改模板文件路径拼接问题 'DIRS': [BASE_DIR, 'templates'] * 3. 在app01 ...

  2. Django框架(十九)—— drf:序列化组件(serializer)

    序列化组件 # 模型层 from django.db import modelsclass Book(models.Model): nid = models.AutoField(primary_key ...

  3. DAY97 - Rest Framework(二)- 序列化组件之Serializer和ModelSerializer

    一.序列化组件之Serializer from django.http import JsonResponse from rest_framework.views import APIView fro ...

  4. Django rest framework 序列化组件

    在笔者认为,在Django rest framework中最重要的是序列化组件,通过序列化我们可以将我们后台数据通过一定格式发送到我们的前端,然后通过一定的方法展示我们的数据. 那么我们就开始介绍我们 ...

  5. 快速上手Django(六) -Django之Django drf 序列化器Serializer类

    文章目录 快速上手Django(六) -Django之Django drf 序列化器Serializer类 1. 背景 2. 使用思路 3. 代码demo 4. [重要]序列化类 ModelSeria ...

  6. Django DRF认证组件/权限组件/序列化组件综合总结(完整版)

    本代码完成的功能是: 1.根据token判断用户登录状态,然后提示用户是否登陆, 2.用户登录后,根据用户类型判断用户是否有权限查看资料 使用rest_framework一定要在配置文件设置先设置 ' ...

  7. django框架——sweetalert前端插件、序列化组件、批量数据操作、分页器、Forms组件(上)

    系列文章目录 第一章 django安装与介绍 第二章 django基础使用 第三章 路由层 第四章 虚拟环境.django版本区别.视图层 第五章 模板层 第六章 模型层(上) 第七章 模型层(下) ...

  8. Rest Framework:序列化组件

    Django内置的serializers(把对象序列化成json字符串 from django.core import serializersdef test(request):book_list = ...

  9. drf3 Serializers 序列化组件

    为什么要用序列化组件 做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 给前端数据的时候都要转成json格式,那就需要对从数据库拿到的数据进行序列化. ...

  10. Rest Framework:二、序列化组件

    一.序列化组件 环境配置: 使django支持Mysql(前面已有介绍,这里不再重复) 使django支持 framework 在settings.py中的INSTALLED_APPS字段添加: &q ...

最新文章

  1. beego 注解路由无效问题分析
  2. 常见证书格式及相互转换
  3. 吴恩达深度学习笔记12-Course4-Week3【目标检测】
  4. 计算机课例,计算机的基本组成教学课例
  5. 技巧:教你一招优化 Go GC
  6. python怎么创建文件夹_如何使用python在文件夹中创建文本文件?
  7. 使用badboy录制脚本 结合Jmeter一起测试。
  8. 如何revert一个merged branch上所有的改动
  9. 基础C语言 学习总结3
  10. linux root权限_Linux 提权技术
  11. Idea配置sbt(window环境)
  12. complexType
  13. 小程序开发者服务器设计,微信小程序的设计思路和理念
  14. matlab四面体网格分割,分割球面
  15. 深入理解Spring四大元注解DIRT
  16. Es6中Promise链式调用then方法
  17. codeforces_946D_Timetable(分组背包)
  18. C语言的字符串的联接
  19. oracle数据库怎么进行树查询,oracle树查询的实现
  20. 交换机常用命令——查看修改系统时间,查看交换机SN

热门文章

  1. ctfshow - PNG隐写入门赛
  2. MS08_067漏洞复现
  3. 典型关联分析(CCA)原理总结
  4. 高数篇(三)-- 最小二乘法、正则化
  5. STM32ADC模拟/数字转换详解
  6. LM1875官方电路图元件作用解释说明以及电路调校
  7. 集成电路可测性设计(DFT,Design For Testability)
  8. 图像的二维傅里叶变换的频谱图代码实现
  9. 商品进销差价_新准则下商品进销差价实务处理
  10. AUTOCAD Study