本文主要是介绍drf的APIView、GenericAPIView、GenericViewSet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
drf(django rest framework)都很多api都可以实现listview的功能,对于他们的用法区别做了下总结。因为我也是初学者,也比较混乱,很多不全面或者不对的地方,欢迎指正。
详细内容见http://www.django-rest-framework.org/api-guide/generic-views/
从高到低的继承关系如下:
GenericViewSet(viewset) -drfGenericAPIView(generics) -drfAPIView(views) -drfView -django
这些view之间的差异就引出了drf中另一个核心点mixin
mixin包括:CreateModelMixinListModelMixinRetrieveModelMixinUpdateModelMixinDestroyModelMixin
以ListModelMixin为例做区别,如果我们不去继承这个mixin它里面的这些方法的话。
就无法将get 和 list连接起来。无法连接,那么list中所作的所有功能都不能完成。过滤,分页都将享受不到。
RetrieveModelMixin对于具体的商品信息进行了获取,序列化。这个在后面的商品详情页会介绍到。
UpdateModelMixin中对于部分更新还是全部更新进行了判断。
DestroyModelMixin用来连接我们的delete方法,在我们delete时有一些必要的操作,如设置返回状态204等。
GenericAPIView 继承自APIView:新增加了过滤、分页、序列化
GenericAPIView结合各种mixin可以组合成ListAPIView、RetrieveAPIView、等等,新增了get、post等方法
GenericViewSet继承了GenericAPIView 和ViewSetMixin ,ViewSetMixin允许在url配置时进行绑定,例如使用router或者自己进行绑定
用法示例:
model.py
class Goods(models.Model):"""商品"""category = models.ForeignKey(GoodsCategory, verbose_name="商品类目")name = models.CharField(max_length=100, verbose_name="商品名")sold_num = models.IntegerField(default=0, verbose_name=
这篇关于drf的APIView、GenericAPIView、GenericViewSet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!