二级视图GenericView
基本属性和方法
二级视图GenericView官方文档
GenericView视图提供了属性queryset和serializer_classr和方法get_queryset()和get_serializer_class()
queryset可以指定传给serializer的字段,不需要将这些字段再次实例化再传给serializer。
get_queryset可以自定传给serializer的字段,相对于queryset属性更加灵活。
同样的,serializer_class和get_serializer_class()也只需要其一就可以了
扩展(Mixin)
除了上面的方法外,GenericView还提供了很多扩展方法我们需要导入
from rest_framework.mixin import (mixin的名字)
来使用他们
ListModelMixin
提供了list()方法,用于列出查询集(通常为request=get方法)
默认提供了Response响应,如果存在查询集则返回200 OK响应
CreateModelMixin
提供.create(request, *args, **kwargs)实现创建和保存新模型实例的方法(通常为request=post方法)
如果创建了一个对象,则返回一个201 Created响应,该对象的序列化表示形式作为响应的主体。如果表示包含名为的键url,则Location响应的标题将填充该值。
如果为创建对象而提供的请求数据无效,400 Bad Request则将返回响应,并将错误详细信息作为响应的主体。
RetrieveModelMixin
提供一种.retrieve(request, *args, **kwargs)方法,该方法实现在响应中返回现有模型实例。
如果可以检索对象,则返回200 OK响应,并将对象的序列化表示作为响应的主体。否则它会返回一个404 Not Found。
UpdateModelMixin
提供一种.update(request, *args, **kwargs)方法,用于实现更新和保存现有模型实例。
还提供了.partial_update(request, *args, **kwargs)一种类似于该update方法的方法,除了更新的所有字段都是可选的。这允许支持HTTP PATCH请求。
如果对象被更新,则返回200 OK响应,该对象的序列化表示作为响应的主体。
如果为更新对象而提供的请求数据无效,400 Bad Request则将返回响应,并将错误详细信息作为响应的主体。
DestroyModelMixin
提供.destroy(request, *args, **kwargs)实现删除现有模型实例的方法。
如果删除了一个对象,则返回一个204 No Content响应,否则返回一个404 Not Found。
以上来源于官方文档
三级视图
继承
三级视图继承于GenericView,可以看成是加了Mixin的二级视图,所以同样的三级视图有queryset和serializer_class属性和get_queryset()和get_serializer_class()方法。
在使用三级视图前需要导入包
from rest_framework.generics import 三级视图
CreateAPIView
用于仅创建端点。
提供post方法处理程序。
扩展:GenericAPIView,CreateModelMixin
ListAPIView
用于只读端点以表示模型实例的集合。
提供get方法处理程序。
扩展:GenericAPIView,ListModelMixin
RetrieveAPIView
用于只读端点以表示单个模型实例。
提供get方法处理程序。
扩展:GenericAPIView,RetrieveModelMixin
DestroyAPIView
用于单个模型实例的仅删除端点。
提供delete方法处理程序。
扩展:GenericAPIView,DestroyModelMixin
UpdateAPIView
用于单个模型实例的仅更新端点。
提供put和patch方法处理程序。
扩展:GenericAPIView,UpdateModelMixin
ListCreateAPIView
用于读写端点以表示模型实例的集合。
提供get和post方法处理程序。
扩展:GenericAPIView,ListModelMixin,CreateModelMixin
RetrieveUpdateAPIView
用于读取或更新端点以表示单个模型实例。
提供get,put并且patch方法处理。
扩展:GenericAPIView,RetrieveModelMixin,UpdateModelMixin
RetrieveDestroyAPIView
用于读取或删除端点以表示单个模型实例。
提供get和delete方法处理程序。
扩展:GenericAPIView,RetrieveModelMixin,DestroyModelMixin
RetrieveUpdateDestroyAPIView
用于读写 - 删除端点以表示单个模型实例。
提供get,put,patch和delete方法处理。
扩展:GenericAPIView,RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin
以上来源于官方文档
url添加视图
与一级视图一样,在我们设置了头以后,视图的导入都需要在之后加上.as_view()