美文网首页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