JSON响应
在REST架构下,经常需要后端生成JSON格式的响应。我们可以使用json库,将Python的 对象转换为JSON字符串,并设置其Content-Type为application/json。
def v_user(req):
user = {'name':'whoami','age':'22'}
json_str = dumps(user)
rsp = HttpResponse(json_str,content_type='application/json')
return rsp
使用JsonResponse类
此外,也可以使用Django预置的JsonResponse类,它继承自HttpResponse类,可以方便 生成JSON响应,其原型如下:
JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, **kwargs)
- JsonResponse将响应的Content-Type报文头设置为application/json
- 默认情况下,参数data应当是一个字典对象;如果将参数safe设置为False,那么可以使用 任何可以执行JSON序列化的对象,例如:列表
- 参数encoder指定了执行JSON序列化的对象,默认为DjangoJSONEncoder
上面的示例,使用JsonResponse可以改写为:
def v_user(req)
user = {'name':'whoami','age':'22'}
return HttpResponse(user)
修改示例代码,使用json库实现v_user视图的功能