Django的视图必须要返回一个HttpResponse对象(或者其子类对象),不能像flask一样直接返回字符串。
Django:
return HttpResponse("Hello")
Flask:
return "Hello"
1.HttpResponse:
(1)构造响应对象
HttpResponse(content=响应体,content_type=响应体数据MIME类型,status=状态码)
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型:
text/html
htmltext/plain
普通文本
application/json
json- ...
content_type
不指定默认值为:text/html; charset=utf-8
(2)响应头设置:为HttpResponse对象设置响应头
response = HttpResponse('响应内容')
response['id'] = 'abcd' # 自定义响应头
2.JsonResponse对象
JsonResponse是HttpResponse的子类。
JsonResponse有两个功能:
(1)将数据转换为json字符串,再返回给客户端
(2)自动设置响应头Content-Type为application/json
示例:
def index(request): a = {"id":123,"category":999} return JsonResponse(a)
同样的,JsonResponse也可以接受非字典数据,只需要指定safe=False即可。
def index(request): a = "123" # 列表也可以 return JsonResponse(a,safe=False)
除了JsonResponse,Django还提供了很多子类,可以快递设置状态码。这里就不一一说了。
- HttpResponseRedirect 302
- HttpResponseNotModified 304
- HttpResponseBadRequest 400
- HttpResponseNotFound 404
- HttpResponseForbidden 403
- HttpResponseNotAllowed 405
- HttpResponseServerError 500