无法在Django中使用JsonResponse

时间:2019-07-12 08:15:36

标签: python django python-3.x ascii utf

我有一堆值,我想将它们从views.py函数发送到Django中的模板。我看到一些主题,最好的方法是使用json格式。所以我照做了。但是因为我的值不是ascii,所以我使用的升级版本在正常的Http response中有效,但在JSON response中无效。

这是我的代码

base = {weather_main_key : weather_main_values, wind_speed_key : wind_speed_value + "m", wind_deg_key : wind_deg_value, base_temp_key : base_temp_value + " ℃", base_press_key : base_press_value + " mbar", base_hum_key : base_hum_value + " % " }
        base = json.dumps(base, ensure_ascii=False).encode('utf8')
        return JsonResponse(json.dumps(base))

所以我遇到了一个错误消息

In order to allow non-dict objects to be serialized set the safe parameter to False.

所以我照了我的话做

JsonResponse(json.dumps(base, safe=False, ensure_ascii=False).encode('utf8'))

现在错误是

__init__() got an unexpected keyword argument 'safe'

我不能动...

1 个答案:

答案 0 :(得分:4)

哇,三重编码。你为什么要这么做?

您序列化为json。然后,在对JsonResponse的调用内,您再次序列化为json。但是JsonResponse本身会进行序列化,因此您已经进行了三次序列化。

停止;只需将字典传递给JsonResponse。

post