下面是一个完整的 DRF 视图集示例,包括定义视图集、注册视图集、定制视图集操作等:
代码语言:javascript复制from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
permission_classes = [IsAuthenticated]
def perform_create(self, serializer):
serializer.save(author=self.request.user)
def get_queryset(self):
user = self.request.user
return Book.objects.filter(author=user)
在这个例子中,我们定义了一个 BookViewSet
视图集,并注册到路由中。BookViewSet
提供了默认的 CRUD 操作,但也定制了 perform_create()
方法和 get_queryset()
方法,以便实现更多功能。在视图集中,我们还使用了 DRF 的权限控制功能,只允许已认证用户访问 API。
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register('books', BookViewSet)
urlpatterns = [
path('', include(router.urls)),
]
在这个例子中,我们使用 DRF 的 DefaultRouter
创建了一个路由器,并将 BookViewSet
注册到路由器中,命名为 books
。然后我们将路由器中的 URL 配置包含在 Django 项目的根 URL 配置中。