首页 > 其他分享 >【补充】Django自带的序列化组件

【补充】Django自带的序列化组件

时间:2023-07-17 11:45:38浏览次数:39  
标签:username models gender age queryset Django user 自带 序列化

【11.0补充】Django自带的序列化组件

【一】准备数据

from django.db import models


# Create your models here.
class User(models.Model):
    username = models.CharField(max_length=32, verbose_name="姓名")
    age = models.IntegerField(verbose_name="年龄")
    gender_choices = (
        (1, 'male'),
        (2, 'female'),
        (3, 'others')
    )
    gender = models.IntegerField(choices=gender_choices, verbose_name="性别")

【二】需求

  • 在前端获取到后端用户表里面的所有数据,并且格式是列表套字典

【1.0】简单版本

  • 后端
def ab_ser(request):
    user_queryset = models.User.objects.all()
    # 返回数据格式:[{},{},,{},{},{},{}]
    user_list = []
    for user in user_queryset:
        tmp = {
            'username': user.username,
            'password': user.age,
            'gender': user.get_gender_display(),
        }
        user_list.append(tmp)
    return JsonResponse(user_list, safe=False)
    # return render(request, 'ab_ser.html', locals())
  • 前端
<body>

{% for user_obj in user_queryset %}
    <p>{{ user_obj.name }}</p>
{% endfor %}


</body>
  • 前端接收到的数据展示
[
{"username": "dream", "password": 18, "gender": "male"}, 
{"username": "meng", "password": 28, "gender": "female"}, 
{"username": "hope", "password": 38, "gender": "others"}
]

【2.0】升级版

def ab_ser(request):
    user_queryset = models.User.objects.all()
    res = serializers.serialize('json', user_queryset)
    '''
    serializers 模块内部会帮我们将数据全部变成JSON格式的字符串,并且内部非常的全面
    '''
    return HttpResponse(res)
  • 前端返回的到的数据
[
{
	"model": "app01.user", 
	"pk": 1, 
	"fields": {"username": "dream", "age": 18, "gender": 1}}, 
{
	"model": "app01.user", 
	"pk": 2, 
	"fields": {"username": "meng", "age": 28, "gender": 2}}, 
{
	"model": "app01.user", 
	"pk": 3, 
	"fields": {"username": "hope", "age": 38, "gender": 3}}
]

标签:username,models,gender,age,queryset,Django,user,自带,序列化
From: https://www.cnblogs.com/dream-ze/p/17559622.html

相关文章

  • 【二十三】Django框架(Rest Framework)之版本控制
    【一】为什么需要版本控制API版本控制允许我们在不同的客户端之间更改行为(同一个接口的不同版本会返回不同的数据)。DRF提供了许多不同的版本控制方案。可能会有一些客户端因为某些原因不再维护了但是我们后端的接口还要不断的更新迭代这个时候通过版本控制返回不同的内容......
  • 【补充】Django缓存与内置信号
    【一】缓存的介绍【1】什么是缓存简单概括就是将对数据库操作查询所得到的数据放入另外一台机器上(缓存)中当用户再次请求时,直接去缓存中拿,避免对数据库的频繁操作,加快数据的显示时间需要知道的是,缓存里面的数据一般都设置有超时时间,缓存一般用在数据变化不大,实时率不高的......
  • Dubbo接口+python的接口测试举例(用Python自带的telnetlib库进行dubbo测试)
      最近公司开发新的一套系统,开发出来的方案会基于dubbo分布式服务框架开发的,那么什么是dubbo,身为测试的我,第一眼看到这个,我得去了解了解dubbo是啥玩意,为开展的测试工作做准备,提前先学dubbo的相关知识。 1、什么是dubbo   Dubbo来源于阿里巴巴集团某个团队研发出来的一个......
  • redis序列化配置
    redis序列化配置@ConfigurationpublicclassRedisTemplateConfiguration{/***@paramredisConnectionFactory*@return*/@BeanpublicRedisTemplate<Object,Object>redisTemplate(RedisConnectionFactoryredisConnectionFactory){......
  • java序列化和反序列化
    感觉网上很多博客对这个的解释实在太官方了,也没说为什么一定要实现序列化接口。去看看rpc框架源码,或者java网络编程或者向磁盘进行序列化就知道了。首先这是个标记接口,就是用来告诉程序某某对象是可序列化对象,像dubbo框架,要传输对象就必须序列化。网络编程已经告诉你了,想要向另......
  • Django框架学习
    Django框架开发项目的创建1、在终端创建项目打开终端进入某个目录(项目位置)"C:\ProgramFiles\Python37\Scripts\django-admin.exe"startproject项目名称2、在pycharm创建项目3、默认项目的文件介绍app终端创建apppythonmanage.pystartappapp01默认......
  • Json.NET反序列化漏洞生成Ysoserial攻击Payload
    Ysoserial.Net只提供序列化之后的Payload主体,具体执行的命令从外部输入,实现代码清单如下Stringpayload=@"{    '$type':'System.Windows.Data.ObjectDataProvider,PresentationFramework,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35',  ......
  • 鸟类识别系统python+TensorFlow+Django网页界面+卷积网络算法+深度学习模型
    一、介绍鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。二、效果图片三、演示视频and代码视频+......
  • CTFer成长记录——CTF之Web专题·初识反序列化
    一、题目链接http://122.114.252.87:1110/index2.php前置知识:序列化与反序列化序列化是将变量转换成可保存或传输的字符串,实现函数是:serialize();反序列化是:将字符串转换成变量,是一个逆过程。实现的函数式:unserialize();序列化:上面的结果是对一个对象的打印,后面是序列化......
  • Ubuntu部署django的基础软件安装
    ubuntudjango sudovidjango.sh#インストールのコマンドです。sudoaptinstallgitsudoapt-getinstallapache2apache2-devgdal-binlibgdal-devsudoaptinstalllibapache2-mod-wsgi-py3sudopip3install-yuwsgisudoapt-getinstall-yapache2sudo......