Обновление: при доступе к странице, которая выводит JSON как вывод с помощью браузера Chrome. Показаны неверные результаты.JsonResponse от Django - отображаются неправильные значения
Рассмотрите этот код django, который создает json. Когда вы json.dumps
a long
, две цифры отличаются от ожидаемого. Вот код:
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
вернуться и HttpResponse с телом, как {'pk': 456011173705795438 }
в то время как dumps2 должен возвращать {'pk': 455928532169112023 }
но фактические результаты
{
pk: 456011173705795460
}
и
{
pk: 455928532169112000
}
Обратите внимание, что в обоих случаях последние две цифры в номере изменились. Если вы откроете оболочку django и введите json.dumps ({'pk': 455928532169112023}), то будет создан правильный вывод.
Django 1.8.5 и Python 2.7.6 (IPython 4.0.b1)
Является ли это ошибка или особенность?
Я только что открыл оболочку python и сделал это: >>> из django.http import JsonResponse, HttpResponse >>> import json >> > j = JsonResponse ({'pk': 455928532169112023}) >>> h = HttpResponse (json.dumps ({'pk': 455928532169112023})) >>> для i в j: print i >>> для i в h : print i ------------ оба напечатаны b '{"pk": 455928532169112023} ", которое является правильным значением. Когда вы выполняете команды, которые я сделал в вашей оболочке, дает ли тот же результат? – user2719875
yes @ user2719875 это получает curioser и curioser, ваш метод возвращает правильное значение – middlestump
@ user2719875 Я нашел ответ, но это было благодаря вашему комментарию, который помог мне его найти. Вы опубликуете это как ответ? Я дам возмещение. – middlestump