Django REST Framework-如何使用视图集(三)
【资料图】
定制视图集操作
视图集提供了一些通用的操作,例如获取列表、创建对象、获取详情、更新对象、部分更新对象和删除对象等。如果需要定制这些操作的行为,可以在视图集中重写对应的方法。例如,在 BookViewSet
中,我们可以定制 create()
方法,以便在创建新书籍时自动将当前用户设置为书籍的作者:
class BookViewSet(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)
在这个例子中,我们在 BookViewSet
中重写了 perform_create()
方法,该方法会在创建新书籍时被调用。我们使用 self.request.user
获取当前请求的用户,并将其设置为新书籍的作者。
另一个例子是定制 list()
方法,以便在获取书籍列表时只返回当前用户的书籍:
class BookViewSet(viewsets.ModelViewSet): serializer_class = BookSerializer def get_queryset(self): user = self.request.user return Book.objects.filter(author=user)
在这个例子中,我们在 BookViewSet
中重写了 get_queryset()
方法,该方法会在获取书籍列表时被调用。我们使用 self.request.user
获取当前请求的用户,并将其用于过滤书籍列表,只返回当前用户的书籍。
视图集类型
DRF 中提供了多种视图集类型,可以根据不同的需求选择合适的视图集类型。以下是几种常见的视图集类型:
ModelViewSet
: 提供了默认的 CRUD 操作,以及一些其他常见操作(例如过滤、分页、搜索等)。ReadOnlyModelViewSet
: 提供了默认的读取操作,但不支持创建、更新和删除操作。GenericViewSet
: 提供了多种操作,例如列表、创建、获取详情、更新、部分更新和删除等。ViewSet
: 不提供任何操作,需要手动在子类中定义操作方法。视图集类型的选择取决于 API 的需求和开发人员的编写习惯。
关键词:
相关阅读
-
Django REST Framework-如何使用视图集(三)
视图集提供了一些通用的操作,例如获取列表、创建对象、获取详情、... -
指导价12.49万元起 长安第三代CS75 PL...
北京时间2023年4月26日下午,长安第三代CS75PLUS于线上宣布正式上市... -
美股实时行情解读:道指涨约30点 FDIC...
摘要美股开盘,道指涨约30点,纳指跌0 1%。第一共和银行(FRC )... -
身份证后面的x是大写还是小写
1、一般来说,输入身份证号码,大写小写都是可以的。2、你的号码显... -
汽车过户本人不去别人代办可以吗
可以代办,机动车在办理过户手续的时候,需要携带双方的身份证,并... -
断骨增高手术多少钱_增高手术多少钱
1、增高术也叫骨折增高术和骨延长术。2、手术有风险,费用也很贵,...
精彩放送
-
Django REST Framework-如何使用视图集(三)
视图集提供了一些通用的操作,例如获取列表、创建对象、获取详情、... -
指导价12.49万元起 长安第三代CS75 PL...
北京时间2023年4月26日下午,长安第三代CS75PLUS于线上宣布正式上市... -
美股实时行情解读:道指涨约30点 FDIC...
摘要美股开盘,道指涨约30点,纳指跌0 1%。第一共和银行(FRC )... -
身份证后面的x是大写还是小写
1、一般来说,输入身份证号码,大写小写都是可以的。2、你的号码显... -
汽车过户本人不去别人代办可以吗
可以代办,机动车在办理过户手续的时候,需要携带双方的身份证,并... -
断骨增高手术多少钱_增高手术多少钱
1、增高术也叫骨折增高术和骨延长术。2、手术有风险,费用也很贵,... -
视频丨美!飒!长沙街头现女特警“人墙...
00:115月1日,湖南长沙,在五一商圈女特警们形成“拉链式”人墙,守... -
《信息技术与信息化》_信息技术与信息化...
1、信息技术推广应用的显著成效,促使世界各国致力于信息化,而信息... -
注意!临时管控!
5月1日19时28分G15沈海高速苏通大桥段由于车流量大由南通往苏州方向... -
中国科研工作者打造“机器化学家” 推...
中国科研工作者打造“机器化学家”推动科研范式变革