Django返回json的几种方法(一)

2019-05-01  本文已影响0人  林木酸瓜

使用Django已经很简单,如今前后端分离已经开始普及,那么对于我们前端来说,我们只需要写接口就可以了,虽然django的模板也很好用,但毕竟我们做前端开发的vue,react离我们更近一些,所以我们使用django只需要实现restful接口就可以了。

那么接下来就给大家分享一下Django返回前端数据的几种方法:

Serialize----序列化django对象

序列化 —— 将程序中的一个数据结构类型转换为其他格式(字典、JSON、XML等),例如将Django中的模型类对象装换为JSON字符串,这个转换过程称为序列化。即后端数据转给前端。

  1. 首先我们为什么需要把数据序列化?
    我们可能会有这样的需求:

首先我们先了解一下Python与Json之间数据类型的对应关系

image.png
articles = Article.objects.all() 打印出来
image.png
打印出的QuerySet 是Model的列表。

serializers.serialize('json', articles, ensure_ascii=False) 再次打印出来!

image.png
此时拿到的就是纯字符串,只需要将字符串解析一下就ok了。
import json
json.loads(serializers.serialize('json', articles, ensure_ascii=False))

然后如果我们要把拿到的数据发送给前端,只需要封装成json对象,使用JsonResponse返回给前端就可以了

from django.http import JsonResponse


def article_lists(request):
    articles = Article.objects.all()
    return JsonResponse({
        'code': '0000',
        'data': json.loads(serializers.serialize('json', articles, ensure_ascii=False)),
        'msg': '获取文章列表成功'
    })

那么我们通过浏览器看一下得到的数据~~~


image.png

太棒了,我们已经成功拿到数据了~ 不过,这数据怎么看起来有点...额... 这到底怎么回事? 能不能换种更优雅的方式? ~ 那么请继续关注我!!!下篇文章告诉大家更简单的更优雅的方法。

上一篇下一篇

猜你喜欢

热点阅读