說說HTTPResponse與JsonResponse,Response的區別
阿新 • • 發佈:2018-12-19
1.HTTPResponse是由Django建立的,他的返回格式為HTTPResponse(content=響應體, content_type=響應體資料型別, status=狀態碼),可以修改返回的資料型別,適用於返回圖片,視訊,音訊等二進位制檔案
2.JsonReponse是HTTPResponse的子類,適用於處理json格式的資料,但是不能返回模板。
幫助我們將資料轉換為json字串
設定響應頭Content-Type為application/json
3.Response是Django-rest Framework框架中封裝好的響應物件,他的返回格式為Response(data, status=None, template_name=None, headers=None, content_type=None),
data只需傳遞python的內建型別資料即可,如果是Django的模型類物件,那麼就使用序列化將資料(python的字典資料)傳遞給data。
from django.views import View from .models import Goods from django.http.response import HttpResponse,JsonResponse from django.core import serializers #django 的View #新增加django 的序列化器 class GoodsListDjangoSerializerView (View): #重寫get方法 def get(self,request): self.x = print("request==", request) goods_list = Goods.objects.all() print("goods_list==",goods_list) #使用了django的序列化 --工具類 序列化器 #字串,轉換成json資料 data = serializers.serialize("json",goods_list) print("data type",type(data)) #第一方式返回 #返回資料,Content-Type: application/json,告訴瀏覽器,json資料 # return HttpResponse(data,"application/json") import json # #把字串轉換列表或者字典 data = json.loads(data) # #第二種方式返回 # #safe=False, # return JsonResponse(data,safe=False,)
from django.conf.urls import url from myshop.settings import MEDIA_ROOT from django.views.static import serve from goods.view_django_view import GoodsListDjangoView from goods.view_django_serializer_view import GoodsListDjangoSerializerView # from django.contrib import admin import xadmin urlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^xadmin/', xadmin.site.urls), # 配置xadmin後臺能顯示圖片的路徑 url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}), url(r'^goods1/',GoodsListDjangoView.as_view(),name='goods1'), url(r'^goods2/',GoodsListDjangoSerializerView.as_view(),name='goods2'), ]