Django框架学习8--返回json数据

后端现在返回的数据格式经常要求是json的,可以使用JsonResponse返回json格式数据。

 class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs)  

  data: 应该传递一个标准的 python 字典给它,它将其转换成 json 格式的数据。

  encoder:默认为 django.core.serializers.json.DjangoJSONEncoder,用于序列化data。关于这个序列化的更多信息参见JSON 序列化。

  safe : 默认为True。如果设置为False,可以传递任何对象进行序列化(否则,只允许dict 实例)。如果safe 为True,而第一个参数传递的不是dict 对象,将抛出一个TypeError。

另外:它的默认 Content-Type 头部设置为application/json。

  json_dumps_params:在1.9版本中新增,可以传递一个python标准的 json 库中,json.dump() 方法处理后的对象给它,用于生成一个响应。

三种转换方法:

from django.core import serializers
from django.http import Http404, HttpResponse,JsonResponse
from django.forms import model_to_dict
import json
def get_json(request):
    heros = Hero.objects.all()
    #方法1
    data = {}
    result1 = serializers.serialize("json",heros)
    print(result1,type(result1))
    #返回的是一个字符串,通过loads方法进行反序列化
    data["result"]= json.loads(result1)
    #方法2
    # data=[]
    # for i in heros:
    #     json_dict = model_to_dict(i)
    #     data.append(json_dict)
    #方法3
    # data=[]
    # data = list(heros.values())
    return JsonResponse(data,safe=False,json_dumps_params={'ensure_ascii':False})
#传递的data不是字典的时候,safe参数需要修改为False

#第三个参数是为了让返回的数据中中文正常显示,否则显示的是unicode

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值