Django rest-framework框架-组件之视图
2024-09-01 15:26:00
视图:
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
最新文章
- Magento的基本架构解析
- (copy) Shell Script to Check Linux System Health
- [转]关于NSAutoreleasePool&#39; is unavailable: not available in automatic reference counting mode的解决方法
- C++中 destory() 和deallocate()以及delete函数的相关性和区别性
- [Sharepoint]备份 迁移 还原
- java项目中eclipse控制台输出log4j的信息
- IP,TCP,UDP Checksum校验
- 网站全局js代码
- UVA 2039 Pets(网络流)
- 【JS】布尔逻辑
- System.Web.Optimization找不到引用怎么办?
- appendChild方法详解
- PHP数字金额转换大写金额
- C#版的 Escape() 和 Unescape()
- 第27月第24天 git pull fetch
- 关于Discuz! X系列UC_Server 本地文件包含漏洞
- ios NSURLSession后台传输
- JavaScript Window Location 当前页面的地址
- opencv在同一窗口打印多张图片
- 在WEB开发的时候导入各种jar包
热门文章
- python 过滤 b&#39;及提取 cmd命令返回值
- pytorch常用损失函数
- MySQL批量导入Excel、txt数据
- mysql 对应数据库服务器配置 所能承受的tps和qps
- SpringCloud学习成长 四 断路器(Hystrix)
- Java读取Excel文件(包括xls和xlsx)的样例程序
- 【Leetcode_easy】697. Degree of an Array
- 第五章 编码/加密——《跟我学Shiro》
- 最新 好未来java校招面经 (含整理过的面试题大全)
- Asp.Net Core集成Swagger