Python:Django序列化的几种方法
发布日期:2021-10-28 10:19:59
浏览次数:36
分类:技术文章
本文共 2158 字,大约阅读时间需要 7 分钟。
找了这么久,终于找到了。感谢大佬:
之前序列化的时候一直使用Django自带的序列化器--serializers.serialize('json', queryset),可是它会自动过滤掉很多字段,只剩下pk即主键字段,导致所需字段获取不了。(就是方法三,具体样式下方会有)
终于!!!!!苍天不负有心人吖,终于找到方法了。
models.py文件:
# RESFUL_DJ/app/models.pyfrom django.db import models# Create your models here.class Publisher(models.Model): name = models.CharField(max_length=32, verbose_name='名称', unique=True) address = models.CharField(max_length=128, verbose_name='地址') def __str__(self): return self.name class Meta: db_table = 'db_publisher' verbose_name = "出版商" verbose_name_plural = verbose_name
数据库内容:
获取数据库中的所有数据,以json的格式传给前端。
来了来了,他来了
方法一:
from django.http import HttpResponsefrom app import modelsdef publisher_list(request): ''' 通过不同的方法,展示所有的出版社对象 :param request: 请求 :return: 出版社对象 ''' queryset = models.Publisher.objects.all() # 方法一 data = [] # 这个方法的缺点就是: # 如果字段多了的话,就需要一个一个去写,会很麻烦 # 返回的是字典类型,所以需要json转换成json格式字符串 for i in queryset: p_tmp = { "name": i.name, "address": i.address } data.append(p_tmp) import json return HttpResponse(json.dumps(data), content_type='application/json')
结果:
方法二:
from django.http import HttpResponsefrom app import modelsdef publisher_list(request): ''' 通过不同的方法,展示所有的出版社对象 :param request: 请求 :return: 出版社对象 ''' queryset = models.Publisher.objects.all() # 方法二 data = [] # django自带的模型转字典方法 # 缺点就是图片之类的文件无法转换 # 返回的是字典类型,所以需要json转换成json格式字符串 from django.forms.models import model_to_dict for i in queryset: data.append(model_to_dict(i)) import json return HttpResponse(json.dumps(data), content_type='application/json')
结果:
方法三:(就是他,弄我好久)
from django.http import HttpResponsefrom app import modelsdef publisher_list(request): ''' 通过不同的方法,展示所有的出版社对象 :param request: 请求 :return: 出版社对象 ''' queryset = models.Publisher.objects.all() # 方法三 # 导入django自带的序列化器 # # 返回的是json字符串,不需要再用json转换一次了 from django.core import serializers data = serializers.serialize('json', queryset) return HttpResponse(data, content_type='application/json')
结果:(fields字段获取不了,或者说获取很麻烦)
转载地址:https://blog.csdn.net/weixin_38676276/article/details/107470070 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月11日 03时51分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
手把手教你实现Unity与Android的交互
2019-04-27
手把手教你使用Unity的Behavior Designer
2019-04-27
Unity3D摄像机裁剪——NGUI篇
2019-04-27
lua深拷贝一个table
2019-04-27
app运行提示Unable to Initialize Unity Engine
2019-04-27
spring boot 与 Ant Design of Vue 实现修改按钮(十七)
2019-04-27
spring boot 与 Ant Design of Vue 实现删除按钮(十八)
2019-04-27
spring boot 与 Ant Design of Vue 实现新增角色(二十)
2019-04-27
spring boot 与 Ant Design of Vue 实现修改角色(二十一)
2019-04-27
spring boot 与 Ant Design of Vue 实现删除角色(补二十一)
2019-04-27
spring boot 与 Ant Design of Vue 实现左侧组织树(二十三)
2019-04-27
spring boot 与 Ant Design of Vue 实现新增组织(二十四)
2019-04-27
spring boot 与 Ant Design of Vue 实现修改组织(二十五)
2019-04-27
spring boot 与 Ant Design of Vue 实现删除组织(二十六)
2019-04-27
spring boot 与 Ant Design of Vue 实现新增用户(二十八)
2019-04-27
spring boot 与 Ant Design of Vue 实现修改用户(二十九)
2019-04-27
spring boot 与 Ant Design of Vue 实现删除用户(三十)
2019-04-27