用django rest framework的ModelViewSet写一个增删改查小案例
时间: 2024-06-10 08:10:47 浏览: 315
以下是一个简单的使用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实现增删改查的简单案例。
阅读全文