1. 视图:
  2. a. django
  3. class Test(View):
  4. ...
  5. b. rest_framework
  6. class Test(APIView):
  7. ...
  8. c. GenericAPIView 一般不用这个类来做视图
  9.  
  10. from rest_framework.generics import GenericAPIView
  11. class ViewView(GenericAPIView):
  12. queryset = models.Role.objects.all()
  13. serializer_class = PagerSerializer
  14. pagination_class = PageNumberPagination
  15.  
  16. def get(self,reuqest,*args,**kwargs):
  17. #获取数据 models.Role.objects.all()
  18. roles = self.get_queryset()
  19. pager_roles = self.paginate_queryset(roles)
  20. #序列化
  21. self.get_serializer(instance=pager_roles,many=True)
  22. return Response(ser.data)
  23.  
  24. d. GenericViewSet(ViewSetMixin, generics.GenericAPIView) 继承两个父类
  25.  
  26. #需要路由传参数 url(r'^(?P<version>[v1|v2]+)/v1/$',views.ViewView.as_view({'get':'list','post':'post_list'})),
  27. #参数传递给 ViewView get方法执行list post方法执行post_list
  28. from rest_framework.viewsets import GenericViewSet
  29. class ViewView(GenericViewSet):
  30. def list(self,request,*args,**kwargs):
  31. return Response('GET')
  32. def post_list(self,request,*args,**kwargs):
  33. return Response('POST')
  34.  
  35. e. ModelViewSet(
  36. mixins.CreateModelMixin,
  37. mixins.RetrieveModelMixin,
  38. mixins.updateModelMinxin,
  39. mixins.DestroyModelMinxin,
  40. mixins.ListModelMixin,
  41. GenericViewSet)
  42.  
  43. #需要路由传参数 url(r'^(?P<version>[v1|v2]+)/v1/(?P<pk>\d+)/$',views.ViewView.as_view({'get':'retrieve','delete':'destroy','put':'update','patch':'partial_update'})),
  44. # 继承ModelViewSet 所有的 增删改查的功能都有了
  45. # 如果是get请求 retrieve获取单条数据 根据传的参数pk来查询
  46. # 如果是delete请求 destroy删除数据
  47. # 如果是put请求 update更新数据
  48. # 如果是patch请求 partial_update 部分更新数据
  49. # list 查询所有数据
  50. # create 增加数据
  51. # 需要关注路由系统 {'get':'retrieve','delete':'destroy','put':'update','patch':'partial_update'} {'get':'list','post':'post_list'}
  52. from rest_framework.viewsets import ModelViewSet
  53. class ViewView(ModelViewSet):
  54. queryset = models.Role.objects.all()
  55. serializer_class = PagerSerializer
  56. pagination_class = PageNumberPagination
  57.  
  58. 总结:
  59. - 大部分使用 APIView
  60. - 也可以使用 GenericViewSet 在路由中区分get,post
  61. - 基本的增删改查实现 继承 ModelViewSet
  62. - 增删 继承GenericViewSet CreateModelMixinDestroyModelMinxin
  63. - 复杂逻辑 继承GenericViewSet 或者 APIView

  

Django rest-framework框架-组件之视图的更多相关文章

  1. Django Rest framework 框架之认证使用和源码执行流程

    用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...

  2. Django REST framework框架介绍和基本使用

    Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...

  3. web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝

    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...

  4. [Django REST framework - 序列化组件、source、钩子函数]

    [Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...

  5. Django Rest Framework框架 ---- url控制器

    Django Rest Framework框架 ---- url控制器

  6. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  7. Django Rest framework 框架

    一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...

  8. Django REST framework 基本组件

    一.序列化组件 简单使用 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式.我们可以通过声明与Django forms ...

  9. Django rest framework(8)---- 视图和渲染器

    django rest framework 之视图 序列化器    PagerSerialiser from rest_framework import serializers from api im ...

  10. django的rest framework框架——分页、视图、路由、渲染器

    一.rest framework的分页 1.使用rest framework内置类PageNumberPagination实现分类 from django.conf.urls import url f ...

随机推荐

  1. 40 Flutter仿京东商城项目签名验证原理、签名验证算法

    加群452892873 下载对应40课文件,运行方法,建好项目,直接替换lib目录 pubspec.yaml crypto: ^ SignServices.dart import 'dart:conv ...

  2. css简单学习属性3---css属性选择器

    1:通配符 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  3. Linux -- 如何减少IO过程中的CPU copy

    四种I/O方式的对比 1. Buffered I/O read(file, tmp_buf, len); write(socket, tmp_buf, len); 上下文切换:4次 CPU copy: ...

  4. java大文件下载+断点续传

    java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...

  5. Centos7安装php5.6并配置php-fpm协同工作

    yum install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum in ...

  6. Mac 高效 软件

    彻底卸载软件: cleanmymac 软件转移: AppDelete,选择一个软件归档,换台电脑从归档安装 finder类chrme标签页: XtraFinder

  7. 安卓模拟器Android SDK 4.0.3 R2安装完整图文教程

    在最新的Android 4.0.3 R2模拟器中,已经加入了GPU支持,可以支持OpenGL ES 2.0标准,让开发者可以借助模拟器来测试自己的OpenGL游戏.在去年新增了摄像头支持之后,现在的新 ...

  8. jQuery BlockUI Plugin Demo 3(Page Blocking Examples)

    This page demonstrates several ways to block the page. Each button below activates blockUI and then ...

  9. Python3多重继承排序原理(C3算法)

    参考:https://www.jianshu.com/p/c9a0b055947b https://xubiubiu.com/2019/06/10/python-%E6%96%B9%E6%B3%95% ...

  10. iOS技术面试08:其他

    1 客户端安全性处理方式? 1> 网络数据传输(敏感数据[账号\密码\消费数据\银行卡账号], 不能明文发送) 2> 协议的问题(自定义协议, 游戏代练) 3> 本地文件存储(游戏的 ...