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