Django REST framework - 视图
Django REST framework 视图GenericAPIView
GenericAPIView
这个类扩展了REST框架的APIView
类,通过GenericAPIView
与一个或多个mixin类组合而构建的
例子
在使用通用视图时,将覆盖原视图,并设置多个类属性
from django.contrib.auth.models import User
from myapp.serializers import UserSerializer
from rest_framework import generics
from rest_framework.permissions import IsAdminUser
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (IsAdminUser,)
多对多的关系下
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (IsAdminUser,)
def list(self, request):
# Note the use of `get_queryset()` instead of `self.queryset`
queryset = self.get_queryset()
serializer = UserSerializer(queryset, many=True)
return Response(serializer.data)
特别简单的情况下还可以通过`.asview()方法传递任何类属性
url(r'^/users/', ListCreateAPIView.as_view(queryset=User.objects.all(), serializer_class=UserSerializer), name='user-list')
属性
基本设置:
以下属性控制基本视图行为。
1. `queryset` - 为从此视图中返回的对象的查询集, 通常必需设置.如果要覆盖此视图,需要调用`get_queryset()`方法
2. `serializer_class` - 用于验证和反序列化输入以及序列化输出的序列化程序类。通常,您必须设置此属性,或覆盖该`get_serializer_class()`方法。
3. `lookup_field` - 应该用于执行单个模型实例的对象查找的模型字段。默认为'`pk`'。请注意,使用超链接的API时,您需要确保双方的API意见和串行类设置查找字段,如果你需要使用一个自定义值。
4. `lookup_url_kwarg` - 应该用于对象查找的URL关键字参数。URL conf应包含与此值对应的关键字参数。如果未设置,则默认使用与之相同的值`lookup_field`。
混入
mixin类提供用于提供基本视图行为的操作。请注意,mixin类提供了操作方法,而不是直接定义处理程序方法,例如.get()和.post()。这允许更灵活的行为组合。
mixin类可以从中导入rest_framework.mixins
。
LisrModelMixin - 提供一种.list(request, *args, **kwargs)实现列出查询集的方法。
CreateModelMixin - 提供.create(request, *args, **kwargs)实现创建和保存新模型实例的方法。
RetrieveModelMixin - 提供一种.retrieve(request, *args, **kwargs)方法,该方法实现在响应中返回现有模型实例。
UpdateModelMixin - 提供一种.update(request, *args, **kwargs)方法,用于实现更新和保存现有模型实例。
DestoryModelMixin - 提供.destroy(request, *args, **kwargs)实现删除现有模型实例的方法。
具体视图类
在混入类的基础上进行封装, 如果不需要大量的自定义行为,可以从中导入视图rest_framework.generics
。
CreateAPIView
用于仅创建端点。
提供post方法处理程序。
ListAPIView
用于只读端点以表示模型实例的集合。
提供get方法处理程序。
RettieveAPIView
用于只读端点以表示单个模型实例。
提供get方法处理程序。
UpdateAPIAView
用于单个模型实例的仅更新端点。
提供put和patch方法处理程序。
ListCrrateAPIView
用于读写端点以表示模型实例的集合。
提供get和post方法处理程序。
RetrieveUpdateAPIView
用于读取或更新端点以表示单个模型实例。
提供get,put并且patch方法处理。
RetrieveDestroyAPIView
用于读取或删除端点以表示单个模型实例。
提供get和delete方法处理程序。
RetrieveUpdateDestroyAPIView
用于读写 - 删除端点以表示单个模型实例。
提供get,put,patch和delete方法处理。
自定义基类
如果您在多个视图中使用mixin,则可以更进一步,创建自己的一组基本视图,然后可以在整个项目中使用。例如:
class BaseRetrieveView(MultipleFieldLookupMixin,
generics.RetrieveAPIView):
pass
class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin,
generics.RetrieveUpdateDestroyAPIView):
pass
https://img2018.cnblogs.com/blog/1479869/201901/1479869-20190114220105178-568867006.png
Django REST framework - 视图的更多相关文章
- Django Rest Framework 视图和路由
Django Rest Framework 视图和路由 DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们 ...
- python 全栈开发,Day96(Django REST framework 视图,django logging配置,django-debug-toolbar使用指南)
昨日内容回顾 1. Serializer(序列化) 1. ORM对应的query_set和ORM对象转换成JSON格式的数据 1. 在序列化类中定义自定义的字段:SerializerMethodFie ...
- [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
[Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...
- 03 Django REST Framework 视图和路由
01-DRF中的request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 比如,区别 ...
- Django REST framework视图
混合类阶段(封装2次) 路由: url(r'school/$', views.SchoolView.as_view()), url(r'school/(?P<pk>\d+)/$', vie ...
- Django rest framework (视图类详解)
官网:https://www.django-rest-framework.org/api-guide/viewsets/ 在django rest framework 视图中一共有N个类 第一类:AP ...
- Django REST framework基础:视图和路由
DRF中的Request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 比如,区别于Dj ...
- Django rest framework(8)---- 视图和渲染器
django rest framework 之视图 序列化器 PagerSerialiser from rest_framework import serializers from api im ...
- Django Rest framework 之 视图
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
随机推荐
- 微软的技术态度 -- 从其对于CRT的设计考虑说起(Thought on the CRT - What Microsoft Prefers)
很多人从C语言学习过来的人都知道,在编写程序时用到的像printf这样的函数,是作为该语言标准库函数提供的,这也是C语言标准中规定的内容.因此,操作系统必须对其保持一定程度上的透明,也就是说,作为一个 ...
- poj 2104 K-th Number(主席树,详细有用)
poj 2104 K-th Number(主席树) 主席树就是持久化的线段树,添加的时候,每更新了一个节点的线段树都被保存下来了. 查询区间[L,R]操作的时候,只需要用第R棵树减去第L-1棵树就是区 ...
- 【Bzoj2260】【Bzoj4349】商店购物 & 最小树形图
目录 List Bzoj 2260 商店购物 Description Input Output Sample Input Sample Output Bzoj 4349 最小树形图 Descripti ...
- 第二周 Leetcode 493. Reverse Pairs(HARD)
leetcode 493跟经典的逆序对问题没有什么区别, 首先考虑对数组前半部和后半部求逆序对数,若能保证两段数组都有序,则显然可以在线性时间内求出对数. 所以我们采用归并排序的方法,一方面让数组有序 ...
- astgo常见问题(FAQ)知识库
Q:为什么我在astgo 的一些列表页面看不到右侧顶端的高级功能菜单?R:因为你没有先选择代理商,这些操作都是针对于某个代理商才可以操作的! Q:为什么我无法给astgo 的代理商充值?R:因为你登录 ...
- Hadoop - WordCount代码示例
文章来源:http://www.itnose.net/detail/6197823.html import java.io.IOException; import java.util.Iterator ...
- 那些有意思的Github
https://github.com/ngosang/trackerslist Linux下那些有趣的命令.. https://www.linu&xp&robe.com/linux-i ...
- PCB 720全景图嵌入登入界面应用实现
通常软件主界面或登入界面背景图片通常采用固定图片,这里介绍如何将720度全景图嵌入到登入界面中来, 这里用的素材来源于这里上个月在公司里拍摄的全景图, 一.拍摄720度全景图片, 建议:最好用三角固定 ...
- JS连续滚动幻灯片:原理与实现
什么是连续滚动幻灯片?打开一些网站的首页,你会发现有一块这样的区域:一张图片,隔一段时间滑动切换下一张:同时,图片两端各有一个小按钮,供你手动点选下一张:底部有一排小圆圈,供你选定特定的某帧图片.这就 ...
- [Swift通天遁地]三、手势与图表-(1)监听屏幕上触摸事件的各种状态
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...