Django REST Framework-如何使用视图集(三)_观焦点

时间:2023-04-28 19:37:24 来源: 腾讯云


(资料图)

定制视图集操作

视图集提供了一些通用的操作,例如获取列表、创建对象、获取详情、更新对象、部分更新对象和删除对象等。如果需要定制这些操作的行为,可以在视图集中重写对应的方法。例如,在 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 的需求和开发人员的编写习惯。

标签:

相关文章

四川11人被骗偷渡出境“挣大钱” 主犯被判刑2年

成都4月23日电 (吴平华 黄静)近日,四川资阳市公安局临空经济区分局破获了一起11人偷越国边境案,目前...

来源:2022-04-24

全民战疫要坚持的12个健康生活细节

全民战疫,细节制胜!4月21日,上海市健康促进委员会办公室、上海市健康促进中心向全体市民发布倡议书,...

来源:2022-04-24

中国青少年儿童身心健康教育管理委员会正式成立

北京4月23日电 (记者 高凯)23日,中国青少年儿童身心健康教育管理委员会在北京会议中心正式成立。 当日...

来源:2022-04-24

吉林省遭遇“沙尘周” 局地瞬时风力超10级

长春4月23日电 (记者 郭佳)23日,狂风卷着沙土在吉林省多地肆虐。记者从吉林省气象台获悉,这是该省入...

来源:2022-04-24

青海西宁解“静”首日见闻:解“静”不解防

西宁4月23日电 题:青海西宁解“静”首日见闻:解“静”不解防 作者 祁增蓓 23日上午,位于青海省西宁...

来源:2022-04-24

精彩推送