Django-rest-framework 接口实现 rest_framework 中有已经定义好的 工具类 mixins generics viewsets
rest_framework.mixins
请求业务 的 5 种实现
mixin(混合类):不能单独使用,和其它类搭配起来使用(利用了Python支持多继承)
rest_framework.mixinsimput 业务的 主要逻辑都在这里CreateModelMixin创建对象 post 请求ListModelMixin查询所有的对象 get请求RetrieveModelMixin查询一个对象 get请求UpdateModelMixin更改一个对象 put 请求DestroyModelMixin删除一个请求 delete 请求
rest_framework.generics 实际使用时 需要调用的类
实际操作时根据 相应的需求来查询并继承
定义的类的 视图操作 上面实现了 orm 操作 GenericAPIView
以及 增删改查查的 操作 分类 多种选项 根据实际情况分类继承
rest_framework.viewsets 没有实际的 操作 只是对类进行了 归类的继承 方便使用
rest_framework.viewsets`中还封装好了其他的方法 一次性继承
from rest_framework.viewsets import ReadOnlyModelViewSetReadOnlyModelViewSet封住了 两个查询的 方法 以及视图配置ModelViewSet封装了 视图配置以及5 个方法 直接继承这一个方法 完成5中操作
使用
ModelViewSet合成的写法 就要对路由进行设置 actions={'get':'list' .....} 进行归类
url(r'authors/$', views.AuthorViewSet.as_view(
actions={'get': 'list', 'post': 'create'})),
# 作者列表
url(r'authors/(?P<pk>\d+)/$', views.AuthorViewSet.as_view(
actions={'get': 'retrieve', 'put': 'update', 'delete': 'destroy'})),
# 作者详情
或者使用 集成的写法 只写一个路由
from rest_framework.routers import urlpatterns router = DefaurtRouter() # 设置路由应对应的 视图
router.register('authors', views.AuthorViewSet)
router.register('books', views.BooksViewSet) # 将生成的 路由添加到 urlpatterns 中 默认路由
urlpatterns += router.urls
简化写法
视图只需要写一个就可以完成相应的操作
视图中 注意在路由中也要做一些修改
分开的写法:
# 导入配置类
from rest_framework.viewsets import GenericViewSet
# 分开写 可以通过继承方式来 实现某种功能 路有中也必须分开写
导入5 个 混合类 配合使用
from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, DestroyModelMixin, \
RetrieveModelMixin
# 有 get post 请求
class BooksList(GenericViewSet, CreateModelMixin, ListModelMixin):
queryset = models.Books.objects.all()
serializer_class = BooksModelSerializer
# get put delete 请求
class BookDetail(GenericViewSet, UpdateModelMixin, DestroyModelMixin, RetrieveModelMixin):
queryset = models.Books.objects.all()
serializer_class = BooksModelSerializer
写成一个的 写法
from rest_framework.viewsets import ModelViewSet
# 导入rest_framework已经 封装好的 5 种请求类 以及配置类
# 直接继承 就可以 使用返回 5 中请求
class AuthorViewSet(ModelViewSet):
"""
list()
create()
retrieve()
update()
destroy()
"""
queryset = models.Author.objects.all()
serializer_class = AuthorModelSerializer
路由中
一定要写 actions={}的 参数 字典中的 key 对应小写的 请求方式 value 对应请求 应该执行的 方法
如果 忘了 可以在 rest_framework.viewsets 中 查看 具体 对应的 方法名字
url(r'authors/$', views.AuthorViewSet.as_view(actions={'get': 'list', 'post': 'create'})), # 作者列表
url(r'authors/(?P<pk>\d+)/$', views.AuthorViewSet.as_view(
actions={'get': 'retrieve', 'put': 'update', 'delete': 'destroy'})
), # 作者详情
路由也可以 写成一个 由系统自动分配路由 urlpatterns
from rest_framework.routers import urlpatterns
router = DefaurtRouter(
# 设置路由应对应的 视图
router.register('authors', views.AuthorViewSet)
router.register('books', views.BooksViewSet)
将生成的 路由添加到 urlpatterns 中 默认路由
urlpatterns += router.urls
#####此方法 可以在路由中 使用 .json 直接获取json 数据
http://127.0.0.1:8000/books.json
从地址栏获取 ? 参数
request.query_params.get('category')
generics
使用 封装了 所有的 增删改查查 操作
from rest_framework import generics直接继承内部封装的方法
不必在 路由中 写
actions={'get': 'list', 'post': 'create'}来定义 具体的 对应操作class ListAPIView(mixins.ListModelMixin,
GenericAPIView):
"""
Concrete view for listing a queryset.
"""
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
类中已经定义好了 方法 调用对应的 Mixin 类中的 方法
**只需要 定义 **
queryset = models.Course.objects.all()
serializer_class = CourseModelSerializer
Django-rest-framework 接口实现 rest_framework 中有已经定义好的 工具类 mixins generics viewsets的更多相关文章
- Django Rest framework 之 权限
django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) django res ...
- Django Rest framework 之 视图
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- django rest framework 详解
Django REST framework 是用于构建Web API 的强大而灵活的工具包. 我们可能想使用REST框架的一些原因: Web浏览API对于开发人员来说是一个巨大的可用性. 认证策略包括 ...
- Django REST framework完全入门
Django REST framework 一个强大灵活的Django工具包,提供了便捷的 REST API 开发框架 我们用传统的django也可以实现REST风格的api,但是顶不住Django ...
- Django REST Framework 最佳实践
Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. 为什么要使用REST framework? - 在线可视的API,对于赢得你的开发者们十分有用 - 验 ...
- Django REST framework - 视图
目录 Django REST framework 视图GenericAPIView GenericAPIView 例子 属性 混入 具体视图类 自定义基类 Django REST framework ...
- Java实现单词自定义排序|集合类、工具类排序、comparable、comparator接口
课题 针对单词进行排序,先按字母的长度排序,长者在前: 在长度相等的情况下,按字典降序排序. 例如,有单词序列"apple banana grape orange",排序后输出结果 ...
- day71:drf:API接口&Restful API规范&Django Rest Framework&drf中的序列化和反序列化功能
目录 1.web应用模式 2.API接口 3.Restful API规范 4.序列化 5.Django Rest Framework 1.drf的简单介绍 2.drf的特点 3.如何安装drf 4.d ...
- [Django REST framework - 自动生成接口文档、分页]
[Django REST framework - 自动生成接口文档.分页] 自动生成接口文档 # 后端人员写好接口,编写接口文档,给前端人员看,前端人员依照接口文档开发 # 公司里主流 -后端,使用w ...
随机推荐
- ASP.NET MVC 学习笔记-7.自定义配置信息
ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, <appSettings> <add key="LogInf ...
- 【Java每日一题】20170324
20170323问题解析请点击今日问题下方的“[Java每日一题]20170324”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...
- Java设计模式 - 单例模式详解(扩展)
单例模式引发相关整理 如何破坏单例模式 示例: /** * 如果破坏单例模式 * * @author sunyang * @date 2018/11/13 20:14 */ public class ...
- java使用POI将数据导出放入Excel
本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术. POI介绍 使用spring boot导入相关依赖 获取数据(自行处理) 完整代码实例:创建e ...
- react-conponent-hellocynthia
<!DOCTYPE html> <html> <head> <script src="../../build/react.js">& ...
- js 依据“;”折行
function roomIds(roomid) { // var str = roomid.replace(/;/g,'\r\n'); if (roomid) { var str = roomid. ...
- JS对全角与半角的验证,相互转化以及介绍
1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都 ...
- cf1136E. Nastya Hasn't Written a Legend(二分 线段树)
题意 题目链接 Sol yy出了一个暴躁线段树的做法. 因为题目保证了 \(a_i + k_i <= a_{i+1}\) 那么我们每次修改时只需要考虑取max就行了. 显然从一个位置开始能影响到 ...
- Java中线程的同步问题
在生活中我们时常会遇到同步的问题,而且大多数的实际问题都是线程的同步问题 我这里以生活中的火车售票来进行举例: 假设现在我们总共有1000张票要进行出售,共有10个出售点,那么当售票到最后只有一张票时 ...
- IE浏览器兼容性调整总结技巧
前言 最近项目做完,用户需要兼容IE,于是开展了兼容性的调整工作.边调整边想感叹IE真是个沙雕..特将我遇到的问题记录下来,以及记录我的解决办法,以下问题及解决办法,都是真实可用的,本人亲测~~ 一. ...