Django: 路由与视图 互动版

JSON响应

在REST架构下,经常需要后端生成JSON格式的响应。我们可以使用json库,将Python的 对象转换为JSON字符串,并设置其Content-Typeapplication/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视图的功能