【Django 04】Django-DRF(ModelViewSet)

DRF是什么?

ModelViewSet 是 Django REST framework 提供的一个视图集类,它封装了常见的模型操作方法。

模型类提供了默认的增删改查功能。

它继承自 GenericViewSetListModelMixinRetrieveModelMixinCreateModelMixinUpdateModelMixinDestoryModelMixin

知识点 请求 url 特点
GenericViewSet 提供一组通用的视图方法,方便实现特定功能
ListModelMixin get 127.0.0.1:8000/book/ 提供 list 方法,用于获取资源列表
RetrieveModelMixin get 127.0.0.1:8000/book/{1}/ 提供 retrieve 方法,用于获取单个资源的详细信息
CreateModelMixin post 127.0.0.1:8000/book/ 提供 create 方法,用于创建资源
UpdateModelMixin put 127.0.0.1:8000/book/{1}/ 提供 update 方法,用于更新资源
DestroyModelMixin detete 127.0.0.1:8000/book/{1}/ 提供 destroy 方法,用于删除资源
自定义 get/post 127.0.0.1:8000/book/自定义 用户自定义方法/函数

这些技术知识点可以配合使用,帮助我们快速构建出具有 CRUD 功能的 Web 应用,并且遵循了 Django 框架的惯例和最佳实践。它们的应用场景包括博客系统、电商平台、社交网络等各种类型的 Web 应用。通过使用这些技术知识点,我们能够提高开发效率,减少重复的代码编写工作,并且保证代码的一致性和可维护性。

如何使用

设置 queryset 属性为要查询的对象集合,并设置 serializer_class 属性为对应的序列化器类。

示例

view.py

python 复制代码
from rest_framework.viewsets import ModelViewSet
class YourModelViewSet(ModelViewSet):
    queryset = YourModel.objects.all()
    serializer_class = YourModelSerializer

使用 ModelViewSet 后,你将自动获得默认的 CRUD 方法。

python 复制代码
from rest_framework.decorators import action
#### modelviewset
class GoodsCategoryViewSet(ModelViewSet):
    # 指定查询集(用到的数据)
    queryset = GoodsCategory.objects.all()
    # 指定查询集用到的序列化容器
    serializer_class = GoodsCategorySerializer

    @action(detail=False, methods=['get'])
    def latest(self, request):
        latest_obj = GoodsCategory.objects.latest('id')
        print(latest_obj)
        return Response("helllo 你调用了自定义的函数")

serializer.py

python 复制代码
class GoodsSerializer(ModelSerializer):

    # 外键字段相关的数据 需要单独写
    category = GoodsCategorySerializer()

    class Meta:
        # 指定需要序列化的表
        model = Goods
        # 指定我们需要序列化的字段
        fields = '__all__'
相关推荐
云器科技1 天前
云器Lakehouse2025年03月版本发布:打造更强大、更智能、更安全的数据管理新体验
大数据·数据库·架构·spark·lakehouse
是三好1 天前
MySQL问题记录
数据库·mysql
计算机毕设VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue二手物品交易系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
I · T · LUCKYBOOM1 天前
3.1DBeaver 远程连接 MySQL 数据库完整指南
数据库·mysql
Shadow10861 天前
Java 联系人管理系统开发实战:解决查询中的笛卡尔积问题
数据库
宠..1 天前
QRadioButton方法大全
java·服务器·开发语言·数据库·qt
开开心心_Every1 天前
多功能抽奖软件:游戏化互动体验
数据库·游戏·微信·pdf·excel·语音识别·ruby
饺子大魔王的男人1 天前
告别局域网束缚!MongoDB + cpolar,让数据访问随时随地
数据库·mongodb
利刃大大1 天前
【Redis】Redis介绍 && Jedis && SpringDataRedis && 自定义序列化 && 端口转发配置
java·数据库·redis·缓存
无所事事的海绵宝宝1 天前
数据库基础知识
数据库