我们之前写的  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. wordcloud+jieba

    Wordcloud各参数含义 font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf' width : int (de ...

  2. chrome 下修改 agent 的方法

    前言 这篇文章和 tiankonguse 的个人网站里的文章保持同步. 很早之前,在 chrome 下修改 agent 的方法是使用 chrome 插件. 后来 chrome 的某一个版本中自带这个功 ...

  3. C++中模板与泛型编程

    目录 定义一个通用模板 模板特化和偏特化 模板实例化与匹配 可变参数模板 泛型编程是指独立与任何类型的方式编写代码.泛型编程和面向对象编程,都依赖与某种形式的多态.面向对象编程的多态性在运行时应用于存 ...

  4. C#反射调用外部Dll,执行其中异步函数并取返回值

    using System.Reflection; 1.载入Dll Assembly asm=Assembly.LoadFile(FullPath);//FullPath 为Dll所在位置的全路径. 2 ...

  5. ZUI分页器的使用案例(ECLIPSE SMS项目)

    不足:并未编写导出功能 HTML代码: <form action="${basePath}/SMSLogList.cwai" method="post" ...

  6. STS的安装教程-鹏鹏

    STS全称Spring Tools Suite. 简介:Spring Tools Suite (STS)其实就是一个被包装过的Eclipse,主要用于快速的开发Spring项目,我们不用再去编辑繁琐的 ...

  7. 通过SourceTree连接SSL有问题的自建gitlab服务器

    我用的是 SourceTree 作为Git客户端的,用它连接一个HTTPS证书过期的自建git服务,会收到下面错误: abort: error: _ssl.c:507: error:14090086: ...

  8. autofac初识

    在开始autofac时,有必要先了解两个关键词:“控制反转(IoC/Inverse Of Control)”与“依赖注入(DI/Dependence injection)”. 控制反转(IoC):它把 ...

  9. mac,macbook 连接蓝牙耳机播放音乐断断续续

    个人的情况是, mac本连的网线,用的无线鼠标, 屋里80多号人都在用笔记本,应该也有好多开着无线的东西 解决方法: mac 或macbook 连接蓝牙耳机播放音乐断断续续的原因, 在网上找了好多方法 ...

  10. [清华集训]Rmq Problem / mex

    题目链接 我们离线处理这些询问 在右端点所在的位置用vector来push_back询问 维护每个数值最后出现的位置p[x] 从左往右扫,边走边回答询问 对于每个询问我们回答第一个p[x]<l的 ...