Django REST Framework-如何使用视图集(三)
django 使用 如何 Framework rest 图集
2023-06-13 09:18:51 时间
定制视图集操作
视图集提供了一些通用的操作,例如获取列表、创建对象、获取详情、更新对象、部分更新对象和删除对象等。如果需要定制这些操作的行为,可以在视图集中重写对应的方法。例如,在 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 的需求和开发人员的编写习惯。
相关文章
- Python进阶33-Django cookie和session
- 在 Linux 服务器上使用 Nginx + Gunicorn 部署 Django 项目的正确姿势
- 使用python的Django库开发一个简单的数据可视化网站(四)- 使用pyecharts进行数据可视化
- Django(13)django时区问题
- 基于Appium+django+redis+mysql实现UI自动化测试平台
- django官方入门教程_DJango
- django 菜鸟篇+进阶篇[通俗易懂]
- 如何在 Django 项目中使用 MQTT
- Python Django 编程 | 连载 04 - Django 模板
- Django应用上线前有哪些注意事项?如何使用同步或异步容器启动Django应用?
- 使用Django输出CSV
- Django+Celery学习笔记4——django+celery+redis周期任务Crontabs设置
- windows +apache + django + mod_wsgi 部署 Django 站点
- django使用多个数据库
- 再谈《Django 限制访问频率》
- django-simple-captcha 图形验证码使用总结
- how to django admin changlist add myself data
- Django REST Framework-序列化器的使用(二)
- Django REST Framework-什么是视图(一)
- Django REST Framework-配置路由示例
- Django REST Framework-如何使用视图集(二)
- Django使用Redis进行缓存详细步骤
- Django使用redis配置缓存的方法
- django基于存储在前端的token用户认证详解编程语言
- stark组件之批量操作【模仿Django的admin】详解编程语言
- Django的models操作详解编程语言
- Django基础学习七之如何配置django+mysql详解编程语言
- Django 中 cookie的使用
- 使用django-suit为django1.7admin后台添加模板
- Django中实现一个高性能计数器(Counter)实例