drf的modelserializer实现商品列表页

	#view.py
  def post(self,request,format=None):
        serializer = GoodsSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data,status=status.HTTP_201_CREATED)

此时的request为drf里面封装的request
APIView的封装

class GoodsListView(APIView):
	def get(self,request,format=None):
		goods = Goods.object.all()
		goods_serializer = GoodsSerializer(goods,many=True)
		return Response(goods.serializer.data)#无论是post还是get都存放在data里面

GenericAPIView

GenericView的封装
class GoodsListView(mixins.ListModelMixin,generic.GenericAPIView):
	queryset = Goods.objects.all()[:10]
	serializer_class = GoodsSerializer
	#如果这种继承view的方式不给get或者post方法就默认认为不接收请求
	def get(self,request,*arg,**kwargs):
		return self.list(request,*arg,**kwargs)

在GenericAPIView里面还封装了一些不直接元素

from rest_framework.routers import DefaultRouter
from goods.views_base import GoodsListView

class GoodsListView(ListAPIView):
	queryset = Goods.objects.all()[:10]
	serializer_class = GoodsSerializer

Viewsets和Router
在Viewsets中封装了as_view方法,可以直接使用as_view


router = DefaultRouter()
#配置goods的url
router.register(r'goods', GoodsListViewSet, base_name="goods")

序列化:
serializer.py介绍Modelserializer

from rest_framework import serializers
#返回对象,这个封装了response
from rest_framework.response import Response
class CategorySerializer(serializers.ModelSerializer):
	class Meta:
		model = GoodsCategory
		fields = "__all__"
class GoodsSerializer(serializers.ModelSerializer):
	class Meta:
		category = CategorySerializer()#外链函数
		model = Goods
		#fields = ('name')#可以指定字段
		fields = "__all__"#也可以全部选择
		
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值