社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django快速序列化数据

rapospectre • 9 年前 • 11240 次点击  

推荐一个自己写的快速序列化Django QuerySet或者 Django model object的包:

django-simple-serializer

为什么要做django simple serializer?

在django中,目前主要的序列化方法主要有以下三种:

django.core.serializers:

这是django内建的序列器,它可以很好的序列化QuerySet,但当他遇到单独的django model object时就会报错,并且它序列化出的model中如果包含DateTimeField时,输出数据中的时间是个datetime对象,无法直接当作序列化数据使用。

QuerySet.values()

和上面一样,它生成的list/dict时的model中如果包含DateTimeField时,输出数据中的时间是个datetime对象,无法直接当作序列化数据使用。

django-rest-framework serializers

django-rest-framework 是一个帮助用户快速构建REST API的强大工具。同时,他的序列器也非常强大,但是想用他的序列器你不得不为相应的model指定相应的model serializer。在某些时候我们只是想单纯的快速取得序列数据,而django-simple-serializer正好解决了这个问题。

django simple serializer

快速取得序列化数据,拥有多种输出格式,字符串化时间,没有任何额外配置与操作。


安装:

pip install django-simple-serializer

使用:

假设我们现在拥有如下几个models:

class Classification(models.Model):
    c_name = models.CharField(max_length=30, unique=True)

class Article(models.Model):
    caption = models.CharField(max_length=50)
    classification = models.ForeignKey(Classification, related_name='cls_art')
    content = models.TextField()
    publish = models.BooleanField(default=False)

一个简单的例子:

from dss.Serializer import serializer
article_list = Article.objects.all()
data = serializer(article_list)

data:

[{'read_count': 0, 'create_time': 1432392456.0, 'modify_time': 1432392456.0, 'sub_caption': u'first', 'comment_count': 0, u'id': 31}, {'read_count': 0, 'create_time': 1432392499.0, 'modify_time': 1432392499.0, 'sub_caption': u'second', 'comment_count': 0, u'id': 32}]

详细使用及API:

django-simple-serializer

BUG:

在序列化QuerySet、Page、list输出成xml时会报muti root 错误,我正在找一个更好的解决办法修复。也欢迎大家提意见~

PS:求问一个关于测试的问题,怎么模拟产生Django QuerySet数据?望高手解答,小弟感激不尽

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1115
 
11240 次点击