Django REST Framework-如何使用视图集(三)|环球今热点

时间:2023-05-01 16:42:42 来源: 腾讯云


【资料图】

定制视图集操作

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

标签:

精彩推送

员工披露公司经营数据被诉赔50万元,法院认定侵犯商业秘密判赔

因认为员工赵某在在职期间,违反保密义务及公司保密要求,向其他人披露公司经营数据,构成侵犯商业秘密,作

来源:2023.04.27

[快讯]天润科技:第三次中标香港数字孪生三维城市建模项目 助力香港智慧城市建设

近日,天润科技收到中国香港新界西三维数码地图项目中标通知,主要内容包括城市三维建模和数据发布平台开发

来源:2023.04.27

华润苏州园区湖西地块拟建13幢大平层 预计今年7月入市

观点网讯。4月27日,华润苏州园区湖西地块规划公示出炉,项目拟建13幢17-24F的高层和2幢1-2F的配套用房,小

来源:2023.04.27

中邮证券:给予圣邦股份买入评级

中邮证券有限责任公司王达婷近期对圣邦股份进行研究并发布了研究报告《短期业绩承压,重视研发投入增强市场

来源:2023.04.27

天府五幼:巧创环境,沁润童心

为进一步加强对青年教师的培养,加快其专业成长与发展的步伐,培养一支能教善育的青年教师队伍,推动教育教

来源:2023.04.27

杭州:亚运主体育场全负荷试验圆满成功

杭州亚运会进入冲刺阶段,杭州亚运的氛围也愈发浓郁。4月26日晚,杭州奥体中心体育场灯火通明,国网杭州市

来源:2023.04.27

中叉物流科技夏子军获评十大牛商称号

作为牛商企业家一年一度的行业盛会,2023年 "全域营销·创新增长 "中国牛商大会暨第十四届电子商务十大...

来源:2023.04.27

“想创就创” 丽水学院大学生创业训练营开班 全球快讯

为进一步激发大学生创新创业活力,推进校地合作,打造“专创融合”的最短通道,丽水市市场监督管理局与...

来源:2023.04.27

葡萄牙总统:葡萄牙应就殖民行为道歉

葡萄牙总统德索萨25日在议会“四·二五革命”纪念大会上表示,葡萄牙需要就殖民期间对殖民地原住民的剥...

来源:2023.04.27

新闻快讯

X 关闭

X 关闭

新闻快讯