10.视图

  • GenericAPIView封装一些方法,将这些方法返回值放在类变量位置上.

1.GenericAPIView视图示例:不怎么用

from api.utils.serializers.pager import PagerSerialiser
from rest_framework.generics import GenericAPIView class VView(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)

2.GenericViewSet视图类

  • 实现自定义路由执行函数
#urls.py
#get方法过来执行VView get请求执行list方法. post请求执行tijiao
url(r'^(?P<version>[v1|v2]+)/vview/$', views.VView.as_view({"get":"list","post":"tijiao"}),),
#视图函数:
from rest_framework.viewsets import GenericViewSet
class VView(GenericViewSet):
#获取模型类
queryset = models.Role.objects.all()
#序列化器
serializer_class = PagerSerialiser
#分页设置
pagination_class = PageNumberPagination
def list(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)
def tijiao(self,request,*args,**kwargs):pass

3.ListModelMixin 封装get请求

4.CreateModelMixin 自带post请求

#urls.py
url(r'^(?P<version>[v1|v2]+)/vview/$', views.VView.as_view({"get":"list","post":"create"}),),
#GenericViewSet自定义request.methods处理方法,在url上设置
#视图函数:
from rest_framework.viewsets import GenericViewSet
from rest_framework.mixins import ListModelMixin,CreateModelMixin
class VView(ListModelMixin,CreateModelMixin,GenericViewSet):
#获取模型类
queryset = models.Role.objects.all()
#序列化器
serializer_class = PagerSerialiser
#分页设置
pagination_class = PageNumberPagination

5.ModelViewSet

  • 让你的代码变得简单舒服
  • ModelViewSet继承了前面所有类的功能
#urls.py
#设置{"get":"list"} 内置封装好了方法返回所有数据
url(r'^(?P<version>[v1|v2]+)/vview/$', views.VView.as_view({"get":"list"}),),
url(r'^(?P<version>[v1|v2]+)/vview/(?P<pk>\d+)/$', views.VView.as_view(
{"get":"retrieve","delete":"destroy","put":"update","patch":"partial_update"}),
),
"""
"get":"retrieve" 获取单个数据 访问URL:http://127.0.0.1:8000/api/v1/vview/2/
"delete":"destroy" 删除单个数据
"put":"update" 更新一条数据
"patch":"partial_update" 修改一条数据
""" from rest_framework.viewsets import ModelViewSet
class VView(ModelViewSet):
#获取模型类
queryset = models.Role.objects.all()
#序列化器
serializer_class = PagerSerialiser
#分页设置
pagination_class = PageNumberPagination
  • 显示效果

6.总结

1.基本增删改查用ModelViewSet
2.只有增删 CreateModelMixin,DestroyModelMixin,GenericViewSet
3.复杂增删改查,可以使用GenericViewSet 或 APIView
  • 知识拓展

    GenericViewSet.get_object  只有调用get_object
    check_object_permissions 用于判断你这个用户对这个对象是否有调用权限. has_object_permission 才会生效此方法

Django:RestFramework之-------视图的更多相关文章

  1. Django RestFramework(DRF)类视图

    基础视图 1.基础函数视图(@api_view) DRF提供了一种函数基础视图来装饰Django的普通视图,我们可以使用request来接受请求和response响应.一个小例子: from rest ...

  2. django restframework

    一.django restframework 请求流程源码剖析 上面的认证一个流程是rest_framework的关于APIauth的认证流程,,这个流程试用权限.频率.版本.认证.这个四个组件都是通 ...

  3. django restframework 快速入门

    django restframework 快速入门 基本流程 建立 Models 依靠 Serialiers 将数据库取出的数据 Parse 为 API 的数据(可用于返回给客户端,也可用于浏览器显示 ...

  4. Django Restframework 实践(一)

    具备以下知识: django http://www.cnblogs.com/menkeyi/p/5882464.html http://www.cnblogs.com/menkeyi/p/588245 ...

  5. django: rest-framework的 分页和过滤

    django: rest-framework的 分页和过滤 2018年06月28日 10:09:01 weixin_42359464 阅读数:136 标签: flaskrestframeworkdja ...

  6. Django:RestFramework之-------认证

    3 restframework-认证 3.1APIView 认证: 认证是否已经登陆,如果已经登陆返回元组,如果没有登陆报错 源码流程: 执行dispatch方法: def dispatch(self ...

  7. Django RestFramework (DRF)

    准备: 下载 pip install djangorestframework 一 APIView源码解析 1 预备知识 CBV(class based view)FBV(function based ...

  8. 测开大佬告诉你:如何5分钟快速创建restful风格的API接口-使用django restframework框架

    一.思考❓❔ 1.创建API接口难吗? 软件测试工程师: 只测过API接口, 从没创建过 应该需要掌握一门后端开发语言和后端开发框架吧!? 脑容量有限,想想就可怕 2.如何创建API接口呢? 使用Dj ...

  9. django restframework serializer 增加自定义字段

    在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段.有两种方法实现 ...

随机推荐

  1. JMeter5.1开发SMTP协议接口脚本

    jmeter可以测试发邮件和读取邮件. 发送邮件 上图部分解释: Server:邮件发送服务 Port:发邮件端口,不加密25,加密465,如果是465端口,Security settings 需要选 ...

  2. cmd 计划任务

    Schtasks /create /sc ScheduleType /tn TaskName /tr TaskRun [/s Computer [/u [Domain\]User [/p Passwo ...

  3. 【C#】身份证号正确性验证及正则表达式格式验证

    身份证前两位各省对应的编号是: 1.华北地区:北京市|11,天津市|12,河北省|13,山西省|14,内蒙古自治区|15: 2.东北地区: 辽宁省|21,吉林省|22,黑龙江省|23: 3.华东地区: ...

  4. 【mybatis】JdbcType 与Oracle、MySql数据类型对应关系

  5. React / Ant Design Pro 实现Canvas画布实时自适应

    如何实现canvas根据父容器进行自适应? Ant Design的组件都提供了强大的自适应能力,为了对齐父组件,镶嵌在Ant Design组件里的canvas也需要能根据父级容器进行自适应的能力,页面 ...

  6. vmtools的功能

    1.vmtoools是vmware公司的组件 2.vmtools主要安装在Guest OS中 3.在workstation版本中可以是选件安装,但在vsphere中却是必选安装 4.vmtools可以 ...

  7. Python面向对象 | 类属性

    property property是一个装饰器函数,可以将一个方法伪装成属性,调用的时候可以不用加().@property被装饰的方法,是不能传参数的,因为它伪装成属性了. 装饰器的使用:在要装饰的函 ...

  8. PATA1082Read Number in Chinese

    有几点需要注意的地方一是将right转化为与left在在同一节 while (left + 4 <= right) { right -= 4;//每次将right移动4位,直到left与righ ...

  9. C语言实现linux之who功能

    /* who_test.c */ #include<stdio.h> #include<string.h> #include<getopt.h> #include& ...

  10. db服务器参数优化

    1.swap分区 swap作用是在系统内存不够的情况下,当做临时的内存使用. swap是在硬盘上,性能肯定没有再内存好,当系统内存使用超过40%的时候, swap会可能被使用,而系统一旦使用swap会 ...