Django REST Framework-如何使用视图集(二)

2023-04-25 09:48:22 浏览数 (1)

下面是一个完整的 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。

代码语言:javascript复制
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 配置中。

0 人点赞