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. centos7编译安装pgbouncer

    1.下载pgbouncer程序包和libevent依赖包 wget https://github.com/libevent/libevent/releases/download/release-2.1 ...

  2. Java反射之Bean修改更新属性值等工具类

    package com.bocean.util; import java.lang.annotation.Annotation; import java.lang.reflect.Field; imp ...

  3. element-ui级联选择器(Cascader)获取级联对象 (主要是想获取:label值)

    最近使用element-ui 的Casecader 级联对象时,后台要求将对象的label值也传过去,然而,element-ui 官方并没有提供这样方(keng)便 ( die ) 的方法. 一时间直 ...

  4. Taro,实现小程序在样式文件中导入背景图片

    https://taro-docs.jd.com/taro/docs/static-reference.html 注意点是,控制你的图片大小,然后配置完limit后,把dist删掉,重新运行 npm ...

  5. CF1245E:Hyakugoku and Ladders

    CF1245E:Hyakugoku and Ladders 题意描述: 给你一个\(10*10\)的矩阵,矩阵描述如下 最开始的时候你在左下角,你的目标是到达左上角. 你可以走路径或者爬梯子. 路径的 ...

  6. 图的遍历 | 1076 bfs

    bfs踩了很多坑才写完.注意:出队时不做是否vis判断,但是要加上vis[出队顶点]=1 .入队时进行判断,并且也要 vis[入队顶点]=1 #include <stdio.h> #inc ...

  7. iptables 常用命令解析

    查看当前iptables规则: iptables -n -L --line-numbers该命令会以列表的形式显示出当前使用的 iptables 规则,并不做解析,每一条规则前面的编号可以用来做为其它 ...

  8. top命令输出解释以及load average 详解及排查思路

    原地址: https://blog.csdn.net/zhangchenglikecc/article/details/52103737 1.top输出以及load average 详解 昨天nagi ...

  9. 解决myeclipse2017 properties中文被Unicode编码

    输入:http://propedit.sourceforge.jp/eclipse/updates/ 在线安装插件解决.

  10. Maven设置MAVEN_OPTS环境变量

    原文地址:https://blog.csdn.net/porsche_gt3rs/article/details/78787491 一 原因: 运行mvn命令实际是执行java命令,既然是运行java ...