Django返回json的几种方法(一)
2019-05-01 本文已影响0人
林木酸瓜
使用Django已经很简单,如今前后端分离已经开始普及,那么对于我们前端来说,我们只需要写接口就可以了,虽然django的模板也很好用,但毕竟我们做前端开发的vue,react离我们更近一些,所以我们使用django只需要实现restful接口就可以了。
那么接下来就给大家分享一下Django返回前端数据的几种方法:
Serialize----序列化django对象
序列化 —— 将程序中的一个数据结构类型转换为其他格式(字典、JSON、XML等),例如将Django中的模型类对象装换为JSON字符串,这个转换过程称为序列化。即后端数据转给前端。
- 首先我们为什么需要把数据序列化?
我们可能会有这样的需求:
- 把内存中的各种数据类型保存到本地进行数据持久化
- 把内存中的各种数据类型通过网络传送给其他机器或者客户端
首先我们先了解一下Python与Json之间数据类型的对应关系
articles = Article.objects.all()
打印出来image.png
打印出的QuerySet 是Model的列表。
serializers.serialize('json', articles, ensure_ascii=False)
再次打印出来!
此时拿到的就是纯字符串,只需要将字符串解析一下就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
太棒了,我们已经成功拿到数据了~ 不过,这数据怎么看起来有点...额... 这到底怎么回事? 能不能换种更优雅的方式? ~ 那么请继续关注我!!!下篇文章告诉大家更简单的更优雅的方法。