django 中ModelViewSet
时间: 2023-02-16 18:36:22 浏览: 99
ModelViewSet是Django REST framework中的一种视图集合,它提供了基于模型的视图所需的所有操作。 它继承自ViewSet,并且通常与GenericAPIView一起使用。
它提供了以下操作:
- 列表
- 创建
- 详细信息
- 更新
- 删除
你可以使用ModelViewSet来自动处理常见的基于模型的视图操作,而无需手动编写大量的视图代码。
你可以通过继承ModelViewSet并定义你的模型和序列化器来使用它。例如:
```
from django.shortcuts import get_object_or_404
from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
```
相关问题
django modelviewset
Django ModelViewSet是Django REST framework中的一种视图集,它结合了Django中的Model和REST Framework中的ViewSet的特性,能够快速地创建一个包含了CRUD操作的API视图。使用ModelViewSet,你可以不必手动编写每个API视图的代码,而是直接在视图集中定义模型和序列化器,视图集会自动为你处理路由、请求和响应等操作。同时,ModelViewSet也提供了一些默认的动作(如list、create、retrieve、update、partial_update和destroy),你可以根据需要进行定制和扩展。
用django rest framework的ModelViewSet写一个增删改查小案例
以下是一个简单的使用Django Rest Framework ModelViewSet实现增删改查的小案例。
首先,我们需要创建一个Django项目并安装Django Rest Framework。在这个例子中,我们将创建一个简单的博客应用程序,包含两个模型:文章和评论。每篇文章可以有多个评论。
1. 创建Django项目和应用程序
```
$ django-admin startproject blog_project
$ cd blog_project
$ python manage.py startapp blog
```
2. 在blog应用程序中创建模型
我们将创建两个模型:文章和评论。
在blog/models.py中添加以下代码:
```
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
content = models.TextField()
```
3. 创建序列化器
在blog/serializers.py中添加以下代码:
```
from rest_framework import serializers
from .models import Post, Comment
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = ('id', 'content')
class PostSerializer(serializers.ModelSerializer):
comments = CommentSerializer(many=True, read_only=True)
class Meta:
model = Post
fields = ('id', 'title', 'content', 'comments')
```
4. 创建视图集
在blog/views.py中添加以下代码:
```
from rest_framework import viewsets
from .models import Post, Comment
from .serializers import PostSerializer, CommentSerializer
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
class CommentViewSet(viewsets.ModelViewSet):
queryset = Comment.objects.all()
serializer_class = CommentSerializer
```
5. 配置URL路由
在blog_project/urls.py中添加以下代码:
```
from django.urls import include, path
from rest_framework import routers
from blog.views import PostViewSet, CommentViewSet
router = routers.DefaultRouter()
router.register(r'posts', PostViewSet)
router.register(r'comments', CommentViewSet)
urlpatterns = [
path('', include(router.urls)),
]
```
6. 运行服务器并测试API
```
$ python manage.py runserver
```
现在我们可以使用浏览器或curl访问API。例如,要获取所有文章,可以使用以下URL:
```
http://localhost:8000/posts/
```
要创建一篇新文章,可以使用以下curl命令:
```
$ curl -X POST -d '{"title": "My First Post", "content": "Hello World"}' -H 'Content-Type: application/json' http://localhost:8000/posts/
```
要更新一篇文章,可以使用以下curl命令:
```
$ curl -X PUT -d '{"title": "My Updated Post", "content": "Hello World Again"}' -H 'Content-Type: application/json' http://localhost:8000/posts/1/
```
要删除一篇文章,可以使用以下curl命令:
```
$ curl -X DELETE http://localhost:8000/posts/1/
```
以上是使用Django Rest Framework ModelViewSet实现增删改查的简单案例。
阅读全文