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,取代 ...
随机推荐
- HDU 4311 Contest 2
求的是曼哈顿距离.可以把X,Y的距离分开来求.其中,求X.Y的距离可以通过排序后递推的方式求出值的. #include <iostream> #include <algorithm& ...
- POJ 2183
模拟题 #include <iostream> #include <cstdio> #include <algorithm> using namespace std ...
- scp报错:Host key verification failed. REMOTE HOST IDENTIFICATION HAS CHANGED!
1 scp报错:REMOTE HOST IDENTIFICATION HAS CHANGED! [root@xx ~]# scp yum-3.4.3.tar.gz 10.xx.xx.12:/root ...
- 面试-MySQL
1 事务的特性 事务具有四个特性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持续性(Durability).这四个特性也简称ACID性. (1)原 ...
- lscript.ld 链接器脚本
sumary选项卡 lscript.ld是这个应用程序的链接器脚本. 这是实用的作为一个报告 看看内存是针相应用程序. 它也能够被编辑以改变应用程序的位置.双击Hello_Zynqàsrcà lscr ...
- sql server 查询某个表一直显示"正在执行中..."的问题
问题描述:只是单纯的执行了"select count(*) from 某表":数据表中只有一两条数据,能查询其他表,唯独这个表不能进行任何操作: 经百度搜索实验,发现应该是某个进程 ...
- Android TextView加上阴影效果
<TextView android:id="@+id/test_shadow" android:layout_width="wrap_content" a ...
- JavaScript学习——BOM对象
1.BOM 对象:浏览器对象模型(操作与浏览器相关的内容) 2.Window 对象 Window 对象表示浏览器中打开的窗口 setInterval():它有一个返回值,主要是提供给 clearInt ...
- sql server2008怎么给一张表加一个用户
有时候我们要对数据库进行权限管理,防止有人误操作或者窃取数据,那么小编这篇文章就是实现这个的操作过程. 百度经验:jingyan.baidu.com 工具/原料 sql server2008数据库 ...
- SpringBoot学习笔记(10)-----SpringBoot中使用Redis/Mongodb和缓存Ehcache缓存和redis缓存
1. 使用Redis 在使用redis之前,首先要保证安装或有redis的服务器,接下就是引入redis依赖. pom.xml文件如下 <dependency> <groupId&g ...