美文网首页django-rest-framework
django-restful:serializers学习记录(一

django-restful:serializers学习记录(一

作者: 你常不走的路 | 来源:发表于2017-12-30 15:13 被阅读17次

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
下一篇我来写写

相关文章

网友评论

    本文标题:django-restful:serializers学习记录(一

    本文链接:https://www.haomeiwen.com/subject/qmaggxtx.html