serializers 是一个序列化
首先写写django本身如何完成序列化
class GoodsListView(View):
def get(self, request):
"""
通过django的view实现商品列表页
: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字段会报错
因此我们不能使用这个来进行处理
from django.core import serializers
json_data = serializers.serialize("json", goods)
return HttpResponse(json_data,content_type='application/json')
这样虽然不会报错但是 也无法正常显示media 因为他只是把我们数据库中的记录的image拿出来
而没有加上我们在settings中配置的media ,所以不能让前端人员在去进行添加 这样十分的浪费时间
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)
这个方法和上面的那个一样同样有这个问题 只是使用的返回的响应的方式不同
一个是使用的HttpResponse 另一个是JsonResponse
但是这两个都不能很好的处理这个问题 所以我们要 使用drf给我们提供的serializers
下一篇我来写写
网友评论