REST framework 视图层
我们之前写的 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 视图层的更多相关文章
- web框架开发-Django视图层
视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...
- django 实战篇之视图层
视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...
- Django视图层
本文目录 1 视图函数 2 HttpRequest对象 3 HttpResponse对象 4 JsonResponse 5 CBV和FBV 6 简单文件上传 回到目录 1 视图函数 一个视图函数,简称 ...
- $Django 虚拟环境,2.0、1.0路由层区别,Httprequest对象,视图层(fbv,cbv),文件上传
1 虚拟环境:解决问题同一台机器上可以运行不同版本的django, 1 用pychanrm创建--->files-->newproject--->选择虚拟环境 2 setting ...
- springboot整合视图层之jsp
在springboot中不推荐视图层使用jsp展示,但是人们以前已经习惯使用jsp,所以对jsp也有支持,但是是解耦性的.也就是说并没有像其他组件一样直接集成到启动器中,所以像jsp引擎之类的需要额外 ...
- 小程序学习笔记三:页面文件详解之视图层WXML、WXS、WXSS文件
视图层:Pages主要有 wxml页面文件和模板文件.wxs脚本文件.wxss样式文件:component是抽取出来的业务单元,同样拥有wxml页面文件和模板文件.wxs脚本文件.wxss样式文件 ...
- DjangoMTV模型之视图层views及模板层template
Django视图层中views的内容 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容(render),也可以是一个重定向( ...
- python 全栈开发,Day69(Django的视图层,Django的模板层)
昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...
- ORM之视图层
1.request对象 前台POST传来的数据,包装到POST字典中request.POST 前台浏览器窗口携带的数据,包装到GET字典中request.GET 前台请求的方式,request.met ...
随机推荐
- 中小团队快速构建SQL自动审核系统
SQL审核与执行,作为DBA日常工作中相当重要的一环,一直以来我们都是通过人工的方式来处理,效率低且质量没办法保证.为了规范操作,提高效率,我们决定引入目前市面上非常流行的SQL自动审核工具Incep ...
- mysql 导出数据到csv文件的命令
1.导出本地数据库数据到本地文件 mysql -A service_db -h your_host -utest -ptest mysql> select * from t_apps where ...
- spring中获取applicationContext
常用的5种获取spring 中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXm ...
- Cmake编写JNI
调用两个库 CMakeLists.txt //把那种大段的注释去掉了 cmake_minimum_required(VERSION ) add_library( # Sets the name of ...
- Socket编程 - API
基础知识部分:http://www.cnblogs.com/Jimmy1988/p/7839940.html 1. 基本流程 Process Client Server Comment socket( ...
- [转]SQL SERVER中openrowset与opendatasource的区别
本文转自:http://blog.sina.com.cn/s/blog_6399df820102vyy8.html SQL SERVER中openrowset与opendatasource的区别: o ...
- COM线程模型的行为
原文:https://msdn.microsoft.com/library/ms809971.aspx Behavior of the COM Threading Models COM线程模型的行为 ...
- Javascript Madness: Mouse Events
http://unixpapa.com/js/mouse.html Javascript Madness: Mouse Events Jan WolterAug 12, 2011 Note: I ha ...
- JAVA成员方法的调用分析
如下面例子: public class A { int x=10; public int getx() {return x;} } public class B extends A { int x=2 ...
- Linux下svn的安装与部署
最近工作碰到一个问题,我和一个同伙负责开发一个管理系统,基于原来的代码上进行修改,每当他修改之后,我要再修改都要和他确定是不是最新的文件,才能进行修改.非常影响工作的效率,所以在网上找了关于svn的使 ...