Django RESTful framework使用:APIView

建立一个与Model对应的serilalizer类

可以自己设置需要序列化的字段

serializers.py

from rest_framework import serializers
from .models import Goods


class GoodsSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=100, read_only=True)
    goods_front_image = serializers.IntegerField()

如form有ModelForm,serializers也有Modelserializer

通过model 与 fields 序列化指定内容

class GoodsSerializer(serializers.ModelSerializer):

    name = serializers.CharField(max_length=100, read_only=True)
    goods_front_image = serializers.IntegerField()
    class Meta:
        model = Goods
        fields = "__all__"
        # 序列化部分字段
        # fields = ('name', 'goods_num', 'market_price')

Serializer可以进行嵌套,在goods表中category字段设置外健为GoodsCategory。默认序列化输出后category显示为GoodsCategory的id,我们可以将相应的GoodsCategory的详细内容嵌套进去。

class GoodsCategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = GoodsCategory
        fields = "__all__"


class GoodsSerializer(serializers.ModelSerializer):
    category = GoodsCategorySerializer()
    goods_front_image = serializers.IntegerField()
    
    class Meta:
        model = Goods
        fields = "__all__"
views中使用Serializer

对应的List类继承框架中的APIView,重写get方法。

调用之前写好的GoodsSerializer对查询后的结果序列化,当内容为多个时需设置many=True。

返回序列结果的data参数。

from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Goods
from .serializers import GoodsSerializer



class GoodsList(APIView):
    """
    商品列表
    """
    def get(self, request):
        goods = Goods.objects.all()[:10]
        goods_list = GoodsSerializer(goods, many=True)
        return Response(goods_list.data)

转载于:https://www.cnblogs.com/hehecat/p/9330462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值