(资料图片)
下面是一个完整的 DRF 视图集示例,包括定义视图集、注册视图集、定制视图集操作等:
from rest_framework import viewsetsfrom rest_framework.permissions import IsAuthenticatedfrom .models import Bookfrom .serializers import BookSerializerclass 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, includefrom rest_framework.routers import DefaultRouterfrom .views import BookViewSetrouter = DefaultRouter()router.register("books", BookViewSet)urlpatterns = [ path("", include(router.urls)),]
在这个例子中,我们使用 DRF 的 DefaultRouter
创建了一个路由器,并将 BookViewSet
注册到路由器中,命名为 books
。然后我们将路由器中的 URL 配置包含在 Django 项目的根 URL 配置中。