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