我们之前写的  get  post  请求 要写很多 我们现在可以使用rest——framework给我们封装好的类

GenericAPIView

给我们提供了自动匹配验证的信息内部封装

from rest_framework.generics import GenericAPIView

提供了两个固定字段:

    queryset  获取的是你的所有的表的对象

  serializer_class 是让你的信息自动匹配

    queryset = models.Comment.objects.all()

    serializer_class = first_serializers.Commentserializer

我们以前使用get或者post需要自己定义逻辑 进行匹配 很麻烦 现在提供了 精简的类帮我们进行匹配校验

get请求:ListModelMixin  查看你的所有的信息

导入:

from rest_framework.mixins import  ListModelMixin,CreateModelMixin

我们继承这个类 然后再调用这个类的self.list(request,*args,**kwargs)   就完成了get的流程

class CommentView(GenericAPIView,ListModelMixin,CreateModelMixin):
'''
GenericAPIView 提供了queryset 和serializer_class 进行序列化并且校验 '''
queryset = models.Comment.objects.all()
serializer_class = first_serializers.Commentserializer
def get(self,request,*args,**kwargs):
return self.list(request,*args,**kwargs)

post请求:CreateModelMixin  创建信息

继承这个类 然后调用这个类的  self.create(request,*args,**kwargs) 就完成了post的请求并且创建了信息

class CommentView(GenericAPIView,ListModelMixin,CreateModelMixin):
'''
GenericAPIView 提供了queryset 和serializer_class 进行序列化并且校验 '''
queryset = models.Comment.objects.all()
serializer_class = first_serializers.Commentserializer
def get(self,request,*args,**kwargs):
return self.list(request,*args,**kwargs)
def post(self,request,*args,**kwargs):
print('要添加评论了')
return self.create(request,*args,**kwargs)

详细显示 指定的显示哪一个内容   RetrieveModelMixin

导入:

from rest_framework.mixins import RetrieveModelMixin

这个是你要指定你查看的信息的id查看的是详细的信息

这个是使用

return self.retrieve(request,pk)

来把你指定的信息返回

class Comment_DetailView(GenericAPIView,RetrieveModelMixin):
queryset = models.Comment.objects.all()
serializer_class = first_serializers.Commentserializer
def get(self,request,pk):
return self.retrieve(request,pk)

delete :删除信息  DestroyModelMixin

这个指定删除哪一项:

最后调用

self.destroy(request, pk)

并且我们可以调用其中的方法来告诉我们删除成功了:

#     def delete(self, request, pk):
# return self.destroy(request, pk)
#
# def perform_destroy(self, instance): #调用这个方法返回给我们删除额信息
# print("你要删除了...")
# instance.delete()
class Comment_DetailView(GenericAPIView,RetrieveModelMixin,DestroyModelMixin):
queryset = models.Comment.objects.all()
serializer_class = first_serializers.Commentserializer
def get(self,request,pk): #查看信息 return self.retrieve(request,pk) def delete(self, request, pk): # 删除信息return self.destroy(request, pk)

put  :修改信息  UpdateModelMixin

调用了

self.update(request, pk)

所有的数据发送额必须是json格式  (建议使用Postman)

多个封装:RetrieveUpdateDestroyAPIView

其中封装了校验模块    GenericAPIView      修改模块: UpdateModelMixin    删除模块: DestroyModelMixin    详细查看模块:RetrieveModelMixin

from rest_framework.generics import GenericAPIView, RetrieveUpdateDestroyAPIView, ListCreateAPIView
# class CommentDetailView(RetrieveUpdateDestroyAPIView):
# queryset = models.Comment.objects.all()
# serializer_class = app01_serializers.CommentSerializer

然后直接使用就可以了

ListCreateAPIView  :封装了查看   ListModelMixin   和post的 CreateModelMixin

# class CommentView(ListCreateAPIView):
# queryset = models.Comment.objects.all()
# serializer_class = app01_serializers.CommentSerializer
#

最终我们回想这么麻烦会不会有一个可以把所有的都给继承下来的呢:

最终大BOSS

所有的都可以使用:   ModelViewSet

from rest_framework.viewsets import ModelViewSet
直接这样使用就可以用post或者get所有的使用了
class CommentViewSet(ModelViewSet):
queryset = models.Comment.objects.all()
serializer_class = app01_serializers.CommentSerializer

这个我们就要想想 你的get和post put的请求不一样有的需要pk有的不需要 这个时候就要有一个同意的url了防止你设置过多的url

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'comment', views.CommentViewSet) #这个就是设置你的输入并且查找的视图
urlpatterns += router.urls

REST framework 视图层的更多相关文章

  1. web框架开发-Django视图层

    视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...

  2. django 实战篇之视图层

    视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...

  3. Django视图层

    本文目录 1 视图函数 2 HttpRequest对象 3 HttpResponse对象 4 JsonResponse 5 CBV和FBV 6 简单文件上传 回到目录 1 视图函数 一个视图函数,简称 ...

  4. $Django 虚拟环境,2.0、1.0路由层区别,Httprequest对象,视图层(fbv,cbv),文件上传

    1 虚拟环境:解决问题同一台机器上可以运行不同版本的django,  1 用pychanrm创建--->files-->newproject--->选择虚拟环境  2 setting ...

  5. springboot整合视图层之jsp

    在springboot中不推荐视图层使用jsp展示,但是人们以前已经习惯使用jsp,所以对jsp也有支持,但是是解耦性的.也就是说并没有像其他组件一样直接集成到启动器中,所以像jsp引擎之类的需要额外 ...

  6. 小程序学习笔记三:页面文件详解之视图层WXML、WXS、WXSS文件

      视图层:Pages主要有 wxml页面文件和模板文件.wxs脚本文件.wxss样式文件:component是抽取出来的业务单元,同样拥有wxml页面文件和模板文件.wxs脚本文件.wxss样式文件 ...

  7. DjangoMTV模型之视图层views及模板层template

    Django视图层中views的内容 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容(render),也可以是一个重定向( ...

  8. python 全栈开发,Day69(Django的视图层,Django的模板层)

    昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...

  9. ORM之视图层

    1.request对象 前台POST传来的数据,包装到POST字典中request.POST 前台浏览器窗口携带的数据,包装到GET字典中request.GET 前台请求的方式,request.met ...

随机推荐

  1. IE10以下优雅降级(作为范例)

    扒下来一段 优雅降级的代码. <!--[if lt IE 10]> <style> .ie-tip{margin-top: 100px;font-size: 16px;text ...

  2. excel将内容粘贴到筛选后的可见单元格

    默认情况下,筛选后excel表格进行复制粘贴,会贴到隐藏的表格. 可以添加两个辅助列来完成操作:1.在筛选前在表格右边添加"辅助1"列,在第二行输入1,按Ctrl+鼠标左键往下拉到 ...

  3. 面试题26:合并k个排好序的单链表

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. c ...

  4. Nodejs学习笔记(四)—与MySQL交互(felixge/node-mysql)

    简介和安装 Node.js与MySQL交互操作有很多库,具体可以在 https://www.npmjs.org/search?q=mysql  查看. 我选择了felixge/node-mysql,用 ...

  5. Spark2.3.1中用各种模式来跑官方Demo

    1  使用单机local模式提交任务 local模式也就是本地模式,也就是在本地机器上单机执行程序.使用这个模式的话,并不需要启动Hadoop集群,也不需要启动Spark集群,只要有一台机器上安装了J ...

  6. [转]ORA-28001: the password has expired解决方法

    本文转自:http://blog.csdn.net/btt2013/article/details/54862420 参考文献:http://www.zhetao.com/content259 后台报 ...

  7. bootstrap 报错

    1. bootstrap table 加载出错,前台报错 Cannot read property 'colspan' of undefined { title : '设备类型', field : ' ...

  8. SqlSerVer 列与逗号分隔字符串 互相转换

    在项目中,使用SQLServer数据库,有一个需求,需要将数据库的某一列,转换成逗号分隔的字符串.同时,需要将处理完的字符串,转换成为一列. 经过查阅资料与学习,通过以下方式可以实现如上所述需求: 1 ...

  9. Java的Collection.sort()方法

    Java中的Collection.sort()方法能使用泛型对对象的变量进行排序,下面是两种方法. 文件名:student.java import java.util.*; import com.su ...

  10. JAVA中的泛型(Generic)

    Java泛型(Generic)简介 泛型是jdk1.5版本以后推出来的,表示类型参数化,让java能更具有动态性一些,让类型能变成参数传递. 要我自己感觉的话,泛型本身没啥用,跟反射在一起用,就体现出 ...