Django and DRF CBV 视图类

2 篇文章 0 订阅
class View(object):
	这是 Django 原生的视图类,会根据 http 请求的方法,执行相应的函数
	

以下的类都是来自 django rest framework:
class APIView(View):
	比 View 多定义了认证类、权限类、节流类等
	
class GenericAPIView(views.APIView):
	仅仅是比 APIView 多定了如下类变量: queryset   serializer_class   pagination_class 
	和一些使用这些类变量的方法 get_object  get_serializer  get_serializer_class  paginate_queryset 等
    实际上并不比 APIView 先进多少
	
	url(r'^publishes/$', views.PublishView.as_view()),
	url(r'^publishes/(?P<pk>\d+)/$', views.PublishDetailView.as_view()),
	
class GenericViewSet(ViewSetMixin, generics.GenericAPIView):
	主要进步的地方在其父类 ViewSetMixin 重写了 as_view 方法,
	同时就需要在写路由时的  .as_view() 的参数中 加上 {'get':'list', 'post':'creat'}
	结论:只要视图类继承了 GenericViewSet 或 其子类,就需要在写路由时给 as_view函数指定参数
class ModelViewSet(mixins.CreateModelMixin,
               mixins.RetrieveModelMixin,
               mixins.UpdateModelMixin,
               mixins.DestroyModelMixin,
               mixins.ListModelMixin,
               GenericViewSet):
	比 GenericViewSet 进步的意义是继承了好多个 minin , 可以天然的避开一个model表分成两个视图的问题
	url(r'^books/$', views.BookViewSet.as_view({"get":"list","post":"create"}),name="book_list"),
	url(r'^books/(?P<pk>\d+)$', views.BookViewSet.as_view({'get': 'retrieve', 'put': 'update', 
														   'patch': 'partial_update', 'delete': 'destroy'}),name="book_detail"),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值