serializers 是一個(gè)序列化
首先寫寫django本身如何完成序列化
class GoodsListView(View):
def get(self, request):
"""
通過django的view實(shí)現(xiàn)商品列表頁
:param request:
:return:
"""
json_list = []
goods = Goods.objects.all()[:10]
for good in goods:
json_dict={}
json_dict['name']=good.name
json_dict['category']=good.category.name
json_dict['market_price']=good.market_price
json_list.append(json_dict)
from django.forms.models import model_to_dict
for good in goods:
json_dict = model_to_dict(good)
json_list.append(json_dict)
但是 json處理imageField and add_time字段會報(bào)錯(cuò)
因此我們不能使用這個(gè)來進(jìn)行處理
from django.core import serializers
json_data = serializers.serialize("json", goods)
return HttpResponse(json_data,content_type='application/json')
這樣雖然不會報(bào)錯(cuò)但是 也無法正常顯示media 因?yàn)樗皇前盐覀償?shù)據(jù)庫中的記錄的image拿出來
而沒有加上我們在settings中配置的media 棚蓄,所以不能讓前端人員在去進(jìn)行添加 這樣十分的浪費(fèi)時(shí)間
from django.core import serializers
json_data = serializers.serialize("json", goods)
json_data = json.loads(json_data)
from django.http import HttpResponse, JsonResponse
return JsonResponse(json_data, safe=False)
這個(gè)方法和上面的那個(gè)一樣同樣有這個(gè)問題 只是使用的返回的響應(yīng)的方式不同
一個(gè)是使用的HttpResponse 另一個(gè)是JsonResponse
但是這兩個(gè)都不能很好的處理這個(gè)問題 所以我們要 使用drf給我們提供的serializers
下一篇我來寫寫