Django Rest Framework 使用 ModelViewSet

Django Rest Framework (DRF) 是一个用于构建Web API的强大而灵活的工具集。ModelViewSet是DRF中的一个强大工具,它继承了Django的通用类视图,使得在创建RESTful API时更为简单有效。

什么是 ModelViewSet ?

ModelViewSet 是 Django Rest Framework 中的一个包含 create, retrieve, update, delete 和 list 操作的视图集。基本上,它允许你简化代码并优雅地处理 CRUD 操作。

如何使用 ModelViewSet ?

安装 Django Rest Framework

在开始使用 ModelViewSet 之前,你需要首先安装Django Rest Framework。你可以使用 pip 安装:

python 复制代码
pip install djangorestframework

然后在你的Django设置中,在应用列表中添加'rest_framework'。

示例应用

假定你有一个模型,我们称之为Product。

python 复制代码
class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    quantity = models.IntegerField()

    def __str__(self):
        return self.name

然后定义一个序列化器:

python 复制代码
class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ['name', 'price', 'quantity']

然后创建ModelViewSet:

python 复制代码
class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

这个模型ViewSet将提供 listcreateretrieveupdatedestroy 操作。

最后,我们更新 urls.py 文件,使其指向我们的 API 视图集:

python 复制代码
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ProductViewSet

router = DefaultRouter()
router.register(r'products', ProductViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

在该文件中,我们创建一个默认的Router,然后注册我们的ProductViewSet。Router负责处理请求转到适当的视图。

这样,我们就可以通过API进行查询,创建更新和删除操作。

结论

ModelViewSet不仅让我们的代码更简洁,而且帮助我们在我们的应用程序中快速实现CRUD。虽然有时你可能需要更精细的控制,但在大多数情况下,ModelViewSet为快速构建RESTful API提供了一个很好的起点。

相关推荐
二等饼干~za89866817 小时前
GEO 源码部署搭建详细操作教程(2026 最新版)
线性代数·django·开源·音视频·ai-native
源码之家19 小时前
计算机毕业设计:Python农业数据分析与粮食产量预测系统 Django框架 数据分析 可视化 机器学习 深度学习 大数据 大模型(建议收藏)✅
python·机器学习·信息可视化·数据分析·django·flask·课程设计
ILYT NCTR20 小时前
vscode配置django环境并创建django项目(全图文操作)
vscode·django·sqlite
菜鸟学Python1 天前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
天选之子1232 天前
Django基本概念入门(一)
python·django·sqlite
源码之家2 天前
计算机毕业设计:Python棉花产业数据可视化与预测系统 Django框架 ARIMA算法 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅
人工智能·python·算法·信息可视化·数据挖掘·django·课程设计
源码之家2 天前
计算机毕业设计:Python农产品智能推荐与可视化分析系统 Flask框架 矩阵分解 数据分析 可视化 协同过滤推荐算法 深度学习(建议收藏)✅
python·矩阵·数据挖掘·数据分析·django·flask·课程设计
Betelgeuse762 天前
打通 Django 认证:原生 Auth 组件实战与 API 改造
后端·python·django
青花瓷2 天前
PyCharm中创建Django基础网站
ide·pycharm·django
天选之子1232 天前
Django模板(二)
数据库·django·sqlite