ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Django】序列化 �

2019-08-26 17:04:13  阅读:199  来源: 互联网

标签:return Django field json user pk 序列化


原文: http://blog.gqylpy.com/gqy/273


Django中序列化主要应用于将数据库中检索的数据返回给客户端用户,特别是Ajax请求一般返回为Json格式。
*
1、from django.core import serializers**

from django.core import serializers

def test01(request):
    user_list = models.User.objects.all()  # 获取所有用户信息
    data = serializers.serialize('json', user_list)  # 指定json序列化
    return HttpResponse(data)
    
"""
网页中显示的内容如下:
[{
    "model": "blog.user",
    "pk": 1,
    "fields": {
        "name": "zyk01",
        "sex": "男"
    }
}]
"""
# 住:pk字段就是id

可见,此方法返回的数据中包含数据表名称:"model": "blog.user",
并且,此方法不能很好的序列化外键关系,序列化外键得到的是id.
所以,==此方法不安全,不推荐使用.==
*
2、json.dumps**

import json

def test02(request):
    user_list = models.User.objects.all().values('pk', 'name', 'sex')
    # .values('pk', 'name', 'sex'):json不可序列化对象,所以需要加上values
    data = json.dumps(list(user_list))
    return HttpResponse(data)
    
"""
网页中显示的内容如下:
[{"pk": 1, "name": "zyk01", "sex": "\u7537"}, {"pk": 2, "name": "zyk02", "sex": "\u7537"}]
"""

json本身无法序列化对象,但可以通过自定义处理器来扩展,如下:

class JsonCustomEncoder(json.JSONEncoder):
    def default(self, field):
        if isinstance(field, datetime):
            return field.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(field, date):
            return field.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, field)

# 调用:
now_datetime = json.dumps(datetime.now(), cls=JsonCustomEncoder)


原文: http://blog.gqylpy.com/gqy/273

标签:return,Django,field,json,user,pk,序列化
来源: https://www.cnblogs.com/ggg566/p/11413546.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有