如何在Django REST framework中利用SimpleRouter
和DefaultRouter
来高效生成视图集的路由信息,并详细解释如何使用action
装饰器为视图集中的自定义方法生成路由
1.1 使用 Routers
创建 router 对象并注册视图集
在创建 router 对象并注册视图集时,我们会定义一个视图集并注册到 router 中。以下是完整的代码示例:
from rest_framework import routers
from django.urls import path, include
from .views import BookView
# 实例化一个 DefaultRouter
router = routers.DefaultRouter()
# 注册视图集
router.register('book', BookView, basename='book')
# 使用urlpatterns将生成的路由添加到Django的URL配置中
urlpatterns = [
path('', include(router.urls)),
]
上述代码将生成以下路由:
^book/$ name: book-list
^book/{pk}/$ name: book-detail
添加路由数据
有两种方式可以将生成的路由添加到 urlpatterns
中:
方式一:
urlpatterns = [
...
]
urlpatterns += router.urls
方式二:
from django.urls import path, include
urlpatterns = [
...
path('', include(router.urls)),
]
路由代码示例
假设我们在 myapp
应用中有一个 views.py
文件,里面定义了一个视图集 BookView
:
from rest_framework.viewsets import ModelViewSet
from .models import Book
from .serializers import BookSerializer
class BookView(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
标签:图集,REST,Django,Framework,book,urlpatterns,router,import,路由
From: https://blog.csdn.net/yjjpp2301/article/details/140761370