Django的JsonResponse显示了不正确的值

2024-05-07 23:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

更新:当您使用chrome浏览器访问一个输出JSON的页面时。显示的结果不正确。在

考虑一下这个生成json的django代码。当json.dumpsalong时,这两个数字与预期值不同。代码如下:

from django.http import JsonResponse, HttpResponse
import json

def dumps1(request):
    return JsonResponse({'pk': 456011173705795438 })


def dumps2(request):
    return HttpResponse(json.dumps({'pk': 455928532169112023 }))

当然,您会期望dumps1返回,并且以{'pk': 456011173705795438 }的形式对主体进行HttpResponse,而dumps2应该返回{'pk': 455928532169112023 },但实际结果是

^{pr2}$

以及

{
    pk: 455928532169112000
}

请注意,在这两种情况下,数字的最后两位数字都发生了变化。如果打开django shell并输入json.dumps文件({'pk':455928532169112023})生成正确的输出。在

Django 1.8.5和python 2.7.6(ipython 4.0.b1)

这是一个bug还是一个特性?在


Tags: django代码importjsonreturnrequestdef数字
2条回答

正如评论中提到的,我打开了python shell并执行了以下操作:

>>>from django.http import JsonResponse, HttpResponse 
>>>import json 
>>>j = JsonResponse({'pk': 455928532169112023 }) 
>>>h = HttpResponse(json.dumps({'pk': 455928532169112023 })) 
>>>for i in j: 
    print i 
>>>for i in h: 
    print i

都打印了b'{"pk": 455928532169112023}',这是正确的值。我也在使用django1.8,所以问题可能出在其他地方。在

在@user2719875的answer之后。我在寻找其他可能的问题。我以前用过chrome。检查了firefox和wget,发现结果是正确的。然后我在chrome中禁用了一些扩展。问题出在chromejsonview扩展中。(我不会链接到它,因为它是小车)。扩展显示的值不正确!!那只虫子浪费了我很多时间。在

更新:之后,我在chrome商店试用了几个json查看器。唯一能产生正确结果的是“Tulios”的“JSON查看器”

相关问题 更多 >