视图:
a. django
class Test(View):
...
b. rest_framework
class Test(APIView):
...
c. GenericAPIView 一般不用这个类来做视图 from rest_framework.generics import GenericAPIView
class ViewView(GenericAPIView):
queryset = models.Role.objects.all()
serializer_class = PagerSerializer
pagination_class = PageNumberPagination def get(self,reuqest,*args,**kwargs):
#获取数据 models.Role.objects.all()
roles = self.get_queryset()
pager_roles = self.paginate_queryset(roles)
#序列化
self.get_serializer(instance=pager_roles,many=True)
return Response(ser.data) d. GenericViewSet(ViewSetMixin, generics.GenericAPIView) 继承两个父类 #需要路由传参数 url(r'^(?P<version>[v1|v2]+)/v1/$',views.ViewView.as_view({'get':'list','post':'post_list'})),
#参数传递给 ViewView get方法执行list post方法执行post_list
from rest_framework.viewsets import GenericViewSet
class ViewView(GenericViewSet):
def list(self,request,*args,**kwargs):
return Response('GET')
def post_list(self,request,*args,**kwargs):
return Response('POST') e. ModelViewSet(
mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.updateModelMinxin,
mixins.DestroyModelMinxin,
mixins.ListModelMixin,
GenericViewSet) #需要路由传参数 url(r'^(?P<version>[v1|v2]+)/v1/(?P<pk>\d+)/$',views.ViewView.as_view({'get':'retrieve','delete':'destroy','put':'update','patch':'partial_update'})),
# 继承ModelViewSet 所有的 增删改查的功能都有了
# 如果是get请求 retrieve获取单条数据 根据传的参数pk来查询
# 如果是delete请求 destroy删除数据
# 如果是put请求 update更新数据
# 如果是patch请求 partial_update 部分更新数据
# list 查询所有数据
# create 增加数据
# 需要关注路由系统 {'get':'retrieve','delete':'destroy','put':'update','patch':'partial_update'} {'get':'list','post':'post_list'}
from rest_framework.viewsets import ModelViewSet
class ViewView(ModelViewSet):
queryset = models.Role.objects.all()
serializer_class = PagerSerializer
pagination_class = PageNumberPagination 总结:
- 大部分使用 APIView
- 也可以使用 GenericViewSet 在路由中区分get,post
- 基本的增删改查实现 继承 ModelViewSet
- 增删 继承GenericViewSet, CreateModelMixin,DestroyModelMinxin
- 复杂逻辑 继承GenericViewSet 或者 APIView

  

最新文章

  1. Magento的基本架构解析
  2. (copy) Shell Script to Check Linux System Health
  3. [转]关于NSAutoreleasePool&#39; is unavailable: not available in automatic reference counting mode的解决方法
  4. C++中 destory() 和deallocate()以及delete函数的相关性和区别性
  5. [Sharepoint]备份 迁移 还原
  6. java项目中eclipse控制台输出log4j的信息
  7. IP,TCP,UDP Checksum校验
  8. 网站全局js代码
  9. UVA 2039 Pets(网络流)
  10. 【JS】布尔逻辑
  11. System.Web.Optimization找不到引用怎么办?
  12. appendChild方法详解
  13. PHP数字金额转换大写金额
  14. C#版的 Escape() 和 Unescape()
  15. 第27月第24天 git pull fetch
  16. 关于Discuz! X系列UC_Server 本地文件包含漏洞
  17. ios NSURLSession后台传输
  18. JavaScript Window Location 当前页面的地址
  19. opencv在同一窗口打印多张图片
  20. 在WEB开发的时候导入各种jar包

热门文章

  1. python 过滤 b&#39;及提取 cmd命令返回值
  2. pytorch常用损失函数
  3. MySQL批量导入Excel、txt数据
  4. mysql 对应数据库服务器配置 所能承受的tps和qps
  5. SpringCloud学习成长 四 断路器(Hystrix)
  6. Java读取Excel文件(包括xls和xlsx)的样例程序
  7. 【Leetcode_easy】697. Degree of an Array
  8. 第五章 编码/加密——《跟我学Shiro》
  9. 最新 好未来java校招面经 (含整理过的面试题大全)
  10. Asp.Net Core集成Swagger