我们之前写的  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. js函数技巧

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. jQuery操纵cookie(原生javascript处理cookie)

    jQuery也是可以操作cookie的 1.首先下载jQuery.js 以及 jquery.cookie.js 这两个文件 2.安装(其实就是引用) <html>       <he ...

  3. mysql数据库数据监测

    #!/bin/bash MYSQL="mysql -h10.10.10.10 -P8036 -uusername -ppassword --default-character-set=utf ...

  4. Java的Date类与Calendar

    一.Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Da ...

  5. unity游戏开发之entitas框架

    框架介绍 entitas是一个超快.超轻量的c# Entity-Component-System (ECS)框架,专门为Unity引擎设计.提供内部缓存和高速的组件访问,经过精心设计,可以在垃圾收集环 ...

  6. C#byte类型

    byte类型的范围是0~255转换为二进制是00000000~11111111 ---------------------------------------------------------- C ...

  7. EventProxy流程控制

    EventProxy流程控制 EventProxy是一个通过控制事件触发顺序来控制业务流程的工具. 1. 利用事件机制解耦复杂业务逻辑2. 移除被广为诟病的深度callback嵌套问题3. 将串行等待 ...

  8. ASP.NET 省市县三联动 (包含用户控件)

    将压缩文件下载解压后,将用户控件拖到解决方案里,直接可以拖到需要用到的页面里 使用: 数据库是最新的(父子级关系表结构----Region2016.sql) 右键记事本打开,放在sqlServerl里 ...

  9. gRPC版本的 Google APIs

    gRPC将是未来google所有客户端的库标准(DevoxxFR), 这句话的出处: https://twitter.com/chanezon/status/585724143003402240    ...

  10. 记录在window平台安装python的第三库(py,whl)

    在下载python的第三库文件的时候,有些库文件有exe的发行版,但是有些第三库并没有找到针对于window的可执行文件安装包即exe文件,而只有源代码文件即py文件,和whl文件. 下面记录一下在w ...