django-rest-framework视图

GenericView

class GenericView(GenericAPIView):
queryset = models.Role.objects.all()
serializer_class = serializers.RoleSerializer
pagination_class = PageNumberPagination def get(self, request):
# 获取数据
data = self.get_queryset()
# 获取分页数据
page_data = self.paginate_queryset(data)
# 获取序列化数据
resp = self.get_serializer(instance=page_data, many=True)
return Response(resp.data)
  • GenericView在原来的ApiView上做了一点封装,主要使用的有三个方法

    • get_queryset : 获取查询的queryset对象
    • paginate_queryset: 获取分页后的对象,需要接受一个queryset对象参数
    • get_serializer: 序列化数据,制定序列化对象和制定many的参数

GenericViewSet

class GenericView(GenericViewSet):

    def list(self, request):
return Response('list')
from django.conf.urls import re_path

from . import views

urlpatterns = [
re_path(r'^index/', views.GenericView.as_view({'get': 'list'})),
]
  • GenericViewSet的使用跟GenericView大致无差别,只是对应请求方法的函数需要自定义

    • url的as_view方法需要传递一个字典参数,字典的key就是对应的请求方法,value就是对应请求方法的处理函数

ModelViewSet

class GenericView(ModelViewSet):
queryset = models.Role.objects.all()
serializer_class = serializers.RoleSerializer
pagination_class = PageNumberPagination
  • ModelViewSet就更高级了,它默认实现了增删该查的方法,只需要配置好对应的属性就可以了

url

from django.conf.urls import re_path

from . import views

urlpatterns = [
re_path(r'^index/', views.GenericView.as_view({'get': 'list', 'post': 'update'})),
]

全自动生成路由

from django.urls import path, include, re_path
from rest_framework import routers from . import views route = routers.DefaultRouter() route.register('index', views.GenericView) urlpatterns = [
re_path('', include(route.urls))
]

最新文章

  1. 关于调整input里面的输入光标大小
  2. FlasActionScript3随学随机
  3. java常用类 --- Object
  4. Java 编程实践
  5. hdu-4893-Wow! Such Sequence!-线段树【2014多校第三场-J】
  6. 【英语】Bingo口语笔记(50) - Drop系列
  7. linux 网桥的配置与实现
  8. Java系的大网站架构-LinkedIn和淘宝
  9. C#语法糖之第四篇: 扩展方法
  10. iOS状态栏字体设置为白色
  11. 4、File类之获取方法
  12. jQuery css操作
  13. 关于table 冻结 标头及列---js控制方法
  14. 转:【Java并发编程】之四:守护线程与线程阻塞的四种情况
  15. [最新原创电子书]lazarus开发者入门及中级教程
  16. tomcat启动dubbo报IO异常
  17. Android模拟器内安装应用
  18. Connection reset原因分析和解决方案
  19. cocos2dx3.1从零学习(二)菜单、场景切换、场景传值
  20. Mybatis-plus之RowBounds实现分页查询

热门文章

  1. golang sms阿里云发送短信(公司实际项目)
  2. WINDOWS上JDK安装与环境变量设置
  3. (转)C++中的new
  4. 1分钟,带你上手“Markdown”语法
  5. Deepin中安装使用好用的字典GoldenDict
  6. Java字符串转List
  7. 如何使用pyenv在windows10安装多个python版本环境
  8. 第四周java实验
  9. 图-连通分量-DFS-749. 隔离病毒
  10. 字符串-mask-每个元音包含偶数次的最长子字符串