(资料图)
定义视图集需要继承 DRF 提供的视图集类,例如 ModelViewSet
:
from rest_framework import viewsetsfrom .models import Bookfrom .serializers import BookSerializerclass BookViewSet(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer
在这个例子中,我们定义了一个 BookViewSet
视图集,并将 Book
模型的查询集设置为 Book.objects.all()
,将 BookSerializer
序列化器设置为默认序列化器。
接下来,需要将定义好的视图集注册到路由中。我们可以使用 DRF 提供的 DefaultRouter
类来帮助我们自动生成 URL 配置。例如,在 urls.py
文件中,我们可以这样注册 BookViewSet
:
from django.urls import path, includefrom rest_framework.routers import DefaultRouterfrom .views import BookViewSetrouter = DefaultRouter()router.register(r"books", BookViewSet)urlpatterns = [ path("", include(router.urls)),]
在这个例子中,我们首先导入了 DefaultRouter
类和 BookViewSet
视图集。然后,我们创建了一个路由对象 router
,并使用 router.register()
方法将 BookViewSet
视图集注册到路由中。r"books"
是 URL 的前缀,最终 URL 为 /books/
、/books/{id}/
等。最后,我们将 router.urls
包含在 Django 的 URLConf 中,以便让 Django 可以将其添加到项目的 URL 配置中。