【发布时间】:2021-08-27 20:03:42
【问题描述】:
我在 Django Rest Framework 中有一个 ModelViewset:
class UserViewset(viewsets.ModelViewSet):
queryset = models.User
serializer_class = serializers.User
它的路由器:
router = routers.DefaultRouter()
router.register(r'user', views.UserViewset)
我想要此视图集的创建、更新、列出和检索功能的单独 URL:
/user/register/ : POST (create new user)
/user/<pk>/profile : GET (retrieve profile of user)
/user/<pk>/profile/update/ : PATCH (update profile of user)
/user/list : GET (get list of users)
如何实现(使用路由器或 URL)?
【问题讨论】:
-
一种方法是为每个视图创建更多视图,而不是使用路由然后使用路径。
path('/user/register/', views.register.as_view(), name='user-register')。然后只在注册视图中处理 POST 请求。 -
难道不能为同一个视图集函数定义不同的 URL 吗?
-
是的,试试
path('/user/...', views.UserViewset.as_view(), name='user-..')。除非指定为参数,否则我不确定如何使用实际 url:<param>,但在任何情况下这都不是必需的..
标签: python django django-rest-framework django-urls django-rest-viewsets