django序列化单表的4种方法的介绍
这里主要是讲序列化单表的几种方法
先看下models中设计的表结构
from django.db import models # Create your models here. class Book(models.Model):
id = models.AutoField(primary_key=True)
book_name = models.CharField(max_length=64,null=False,blank=False,verbose_name="书籍名称")
book_price = models.DecimalField(max_digits=5,decimal_places=2,null=False,blank=False,verbose_name="书籍价格")
book_publish = models.ForeignKey(to="Publish",to_field="id",verbose_name="书籍出版社")
book_auther = models.ManyToManyField(to="Auther",verbose_name="书籍作者") class Meta:
verbose_name = "书籍表"
verbose_name_plural = verbose_name
def __str__(self):
return self.book_name class Publish(models.Model):
id = models.AutoField(primary_key=True)
publish_name = models.CharField(max_length=64,null=False,blank=False) class Meta:
verbose_name = "出版社表"
verbose_name_plural = verbose_name def __str__(self):
return self.publish_name class Auther(models.Model):
id = models.AutoField(primary_key=True)
auther_name = models.CharField(max_length=64,null=False,blank=False)
def __str__(self):
return self.auther_name class Meta:
verbose_name = "作者表"
verbose_name_plural = verbose_name
我们只对出版社表进行序列化,因为在我们这里的事例中,出版社表所有的字段都是单表字段,处理起来比较简单,后面我们就会介绍一对多和多对多字段的表该如何序列化
我们这里使用cbv的方式来测试
from django import views
下面先介绍三种序列化的方式
import json
class test_cbv(views.View):
def get(self,request,*args,**kwargs): # 一、序列化 publish_list = models.Publish.objects.all()
publish_obj = models.Publish.objects.all().first() # 方式1
# ser1 = publish_list.values("id","publish_name")
# ret1 = json.dumps(list(ser1))
# return HttpResponse(ret1) # 2、方式二
# from django.forms.models import model_to_dict
# model_to_dict 把一个model对象转换为字典的方法
# ret2 = []
# for obj in publish_list:
# temp.append(model_to_dict(obj))
# return HttpResponse(json.dumps(ret2)) # 3、方式3
# from django.core import serializers
# serializers ---django的序列化组件 # ret3 = serializers.serialize(format="json",queryset=publish_list)
# 指明格式为json,传递一个queryset对象进去就可以了 # return HttpResponse(ret3)
最后我们看下restframework序列化的方式,可以序列化一个queryset对象,也可以序列化一个model对象
首先需要通过pip安装restframworkork
pip install djangorestframework
然后按照下面的格式写一个类
# 为queryset或者model对象做序列化的类
from rest_framework import serializers
class pub_serializers(serializers.Serializer):
publish_name = serializers.CharField()
指明对表中哪些字段做处理,和django的froms组件很像
# 4、方式4
# ps_queryset = pub_serializers(publish_list,many=True)
# return HttpResponse(ps_queryset.data) ps_model = pub_serializers(publish_obj)
print(ps_model.data)
return HttpResponse(ps_model.data)
至此,单表的序列化我们介绍完了!
django序列化单表的4种方法的介绍的更多相关文章
- Django扩展Auth-User表的几种方法
方式1, OneToOneField from django.contrib.auth.models import Userclass UserProfile(models.Model): user ...
- form表单提交的几种方法
form表单提交的几种方法 <form id="myform" name="myform" method="post" onsubmi ...
- HTML5中表单验证的8种方法
HTML5中表单验证的8种方法 2012-4-21 11:00| 发布者: benben| 查看: 2765| 评论: 0 摘要: 前一篇,我们介绍了HTML5中新的表单特性和函数, 今天就继续来谈谈 ...
- 巨蟒python全栈开发django6: FBV&CBV&&单表查询的其他方法
练习CBV用法 截图中的action="/cbv/",应该是这样 上边红图,说明mysql有问题,需要重启一下 返回,输入的内容 @wrapper==>cbv=wrapper ...
- MySQL数据库分表的3种方法
原文地址:MySQL数据库分表的3种方法作者:dreamboycx 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目 ...
- js阻止表单提交的两种方法
下面直接看代码. <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- ace+validate表单验证(两种方法)
//修改密码(直接在validate中验证提交) $("#changePassword").on(ace.click_event, function() { var html = ...
- HTML5中表单验证的8种方法(转)
在深人探讨表单验证之前,让我们先思考一下表单验证的真实含义.就其核心而言,表单验证是一套系统,它为终端用户检测无效的控件数据并标记这些错误.换言之,表单验证就是在表单提交服务器前对其进行一系列的检查并 ...
- django之单表操作
1.查询方法: <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs ...
随机推荐
- xampp默认mysql数据库root密码的修改
因为安装xampp后的mysql默认用户root的密码为空,而比如部署Testlink时需要提供数据库密码,此时就需要给root设定密码(网上有些方法,大同小异,但是可能都未标明关键点,未一些出上手的 ...
- UI5-学习篇-10-本地UI5应用发布到SAP前端服务器
1.本地UI5应用发布 点击项目名,右键Deploy,Deploy to Sapui5 ABAP Repository 选择SAP系统连接名,发布或是更新应用 注意上图中,SAPUI5应用版本与选择的 ...
- 微服务-springcloud
感觉微服务都差不多概念,最近稍微看了下springcloud,感觉入门还是很简单的,框架用用就那么回事,深入的话需要很多时间投入了 学一个东西,我推荐首先从概念上了解到他是做什么的,什么时候需要,基本 ...
- deploy service on swarm
转自:https://www.cnblogs.com/jsonhc/p/7852530.html swarm集群配置完成后,查看一些基本的信息: [root@manager1 ~]# docker-m ...
- 一个有趣的nginx问题引发的小问题
最近处理一个nginx问题,故障现象是:所有的work进程,都在等锁.调用的是sem_wait 根据对应的堆栈,查看一下大家等的锁都一样,看看这把锁被谁拿了: 锁的结构是: typedef struc ...
- zabbix简易安装指南
1.php版本为5.5.37 mysql版本为5.5 nginx使用的是tengine2.2.1 2.系统为centos 7.2 最小化安装 3.使用阿里云的epel扩展源 4.首先安装依赖 yum ...
- Module build failed: Error: No PostCSS Config found
使用vue框架写pc页面时,我们经常会用到element-ui这个框架. 当我们把需要的东西都装在好运行项目的时候,有时会出现这样的错误: 这是因为缺少了一个配置文件,postcss.config.j ...
- .Net中使用ODP.net访问Oracle数据库
ODP.Net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用. .net framework4中会将 ...
- python基础学习Day17 面向对象的三大特性之继承、类与对象名称空间小试
一.课前回顾 类:具有相同属性和方法的一类事物 实例化:类名() 过程: 开辟了一块内存空间 执行init方法 封装属性 自动的把self返回给实例化对象的地方 对象:实例 一个实实在在存在的实体 组 ...
- AMQP协议与RabbitMQ、MQ消息队列的应用场景
什么是AMQP? 在异步通讯中,消息不会立刻到达接收方,而是被存放到一个容器中,当满足一定的条件之后,消息会被容器发送给接收方,这个容器即消息队列,而完成这个功能需要双方和容器以及其中的各个组件遵守统 ...