rest_framework 视图
视图:
a.过去
class PagerView(View):
pass b.现在
class Pager1View(APIView):
pass c.rest_framework 基本没用 from rest_framework.generics import GenericAPIView
class V1View(GenericAPIView):
queryset = models.Role.objects.all()
serializer_class = PagerSerialiser
pagination_class = PageNumberPagination def get(self, request, *args, **kwargs):
#获取数据
roles = self.get_queryset()
#分页
pager_roles = self.paginate_queryset(roles) #序列化
ser = self.get_serializer(instance=pager_roles, many=True) return Response(ser.data) d.GenericViewset(ViewSetMixin, genrics.GenericAPIView): urls.py
url(r'^v1/$',views.V1View.as_view({'get':'list'})), #可以改变as_view 视图中的函数中的get方法 改成了list方法 from rest_framework.viewsets import GenericViewSet
class V1View(GenericViewSet):
def list(self,request,*args,**kwargs):
return Response('') 最方便的视图方法 增删改查局部更新和GenericViewSet
视图中
from rest_framework.response import Response
from api.utils.serializers.pager import PagerSerialiser
from rest_framework.pagination import PageNumberPagination
from rest_framework.viewsets import ModelViewSet
class V1View(ModelViewSet):
"""
class ModelViewSet(
mixins.CreateModelMixin, #不需要传id
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin, #不需要传id
GenericViewSet):
"""
queryset = models.Role.objects.all()
serializer_class = PagerSerialiser
pagination_class = PageNumberPagination urls.py 路由系统
from django.contrib import admin
from django.urls import path
from api import views
from django.conf.urls import url
urlpatterns = [
url(r'^v1/$',views.V1View.as_view({'get':'list','post':'create'})),
url(r'^v1/(?P<pk>\d+)/$',views.V1View.as_view({'get':'retrieve','delete':'destroy','put':'update','patch':'partial_update'})),
] utils.serializers.pager.py
from rest_framework import serializers
from api import models
class PagerSerialiser(serializers.ModelSerializer):
class Meta:
model = models.Role
fields = "__all__"
视图总结部分
路由系统
url(r'^v1/$,views.V1View.as_view({'get':'list',post':'create'})),
url(r'^v1/(?P<pk>\d+)/$', views.V1View.as_view({'get':'retrieve','delete':'destroy','put':'update','patch':'partial_update'})), 视图
from api.utils.serializers.pager import PagerSerialiser
from rest_framework.viewsets import GenericViewSet, ModelViewSet
from rest_framework.mixins import ListModelMixin , createModelMixin class V1View(ModelViewSet): #ModelViewSet包含增删改查局部更新和GenericViewSet
queryset = models.Role.objects.all()
serializer_class = PagerSerialiser
pagination_class = PageNumberPagination
rest_framework 视图的更多相关文章
- rest_framework视图和组件
一.视图 1.基本视图 #基本视图 #抽取基类 from rest_framework.response import Response from rest_framework.views impor ...
- rest_framework视图
知识预览 视图 回到顶部 视图 使用混合(mixins) 上一节的视图部分: from rest_framework.views import APIView from rest_framewor ...
- drf5 版本和认证组件
开发项目是有多个版本的 随着项目的更新,版本就越来越多.不可能新的版本出了,以前旧的版本就不进行维护了 那我们就需要对版本进行控制,这个DRF框架也给我们提供了一些封装好的版本控制方法 版本控制组件 ...
- 那些坑爹的python面试题
python基础知识思维导图 MyProcessOn Python基础: 说说你眼中的python( 2 ) 谈谈你对python和其他语言的区别 1. python 中,变量是以内容为基准而不是像 ...
- rest_framework中视图相关
模型类的定义 # 定义图书模型类BookInfo class BookInfo(models.Model): btitle = models.CharField(max_length=20, verb ...
- Django的rest_framework的视图之基于ModelViewSet视图源码解析
前言 今天一直在整理Django的rest_framework的序列化组件,前面一共写了2篇博客,前面的博客给的方案都是一个中间的状态的博客,其中有很多的冗余的代码,如果有朋友不清楚,可以先看下我前面 ...
- Django的rest_framework的视图之基于通用类编写视图源码解析
我们上一篇博客讲解了如何使用mixins类实现rest_framework的视图,但是其中有很多的冗余的代码,我们这边在来优化一下 1.queryset的视图函数 首先看下对queryset操作的视图 ...
- Django的rest_framework的视图之Mixin类编写视图源码解析
Mixin类编写视图 我们这里用auther表来做演示,先为auther和autherdetail写2个url url(r'^autherdetail/(?P<id>\d+)', view ...
- django rest_framework入门四-类视图APIView
上节,我们使用函数视图,用了@api_view装饰器来修饰,这一节,我们介绍类视图APIView,显然,类视图更符合面向对象的原则. 1.使用类视图APIView重写API 类视图APIView,取代 ...
随机推荐
- 上机题目(0基础)-计算两个正整数的最大公约数和最小公倍数(Java)
题目例如以下:
- sqlite学习笔记9:C语言中使用sqlite之插入数据
前面创建了一张表,如今给他插入一些数据.插入数据跟创建表差点儿相同,不过SQL语言不一样而已,完整代码例如以下: #include <stdio.h> #include <stdli ...
- C++之易混淆知识点一-----static详解
1.const.mutable与volatile的区别:const表明内存被初始化以后,程序将不能对它进行修改.volatile则表明,即使程序代码没有对内存单元进行修改,但是里面的值也可能会发生变化 ...
- (转载) android快速搭建项目积累
android快速搭建项目积累 2016-04-05 20:07 519人阅读 评论(0) 收藏 举报 分类: android优化(8) Rx技术(5) 版权声明:本文为博主原创文章,未经博主 ...
- 【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)
单源最短路问题是固定一个起点,求它到其他所有点的最短路的问题. 算法: 设 d[i] 表示 起点 s 离点 i 的最短距离. [1.初始化] 固定起点s,对所有的点 , 如果 i = s , ...
- BootStrap学习(二)——重写首页之topbar
1.布局容器 帮助文档:http://v3.bootcss.com/css/#overview-container BootStrap需要为页面内容和栅栏系统包裹一个.container容器.提供的两 ...
- SQL使用技巧-批量删除-批量更新-bcp导出-跨服务器sql
1.循环删除数据 while @@rowcount>0 begin delete top (1000) from T where OperateTime >=2014 ...
- C语言-实现字符串倒序输出
方法1: Action(){//倒序输出 char *src="abcdefgh123"; char *desc; desc=(char *)malloc(100*sizeof(c ...
- 【AnjularJS系列1 】— 样式相关的指令
最近,开始学习AngularJS. 开始记录学习AngularJS的过程,从一些很简单的知识点开始. 习惯先从实际应用的指令开始,再从应用中去体会AngularJS的优缺点.使用的场景等. 之前一直希 ...
- 接口测试工具篇--jmeter
jmeter的安装及使用在这里不进行讲解了,网上有很多资料 下面开始讲解如何使用jmeter做http接口测试 在jmeter中添加一个http请求,添加方式:测试计划上邮件添加线程组,线程组上邮件选 ...