Python Django Rest Framework文档中不显示具有多个方法的多个嵌套资源
我想知道为什么Django REST框架内置文档不显示Python Django Rest Framework文档中不显示具有多个方法的多个嵌套资源,python,django,python-2.7,python-3.x,django-rest-framework,Python,Django,Python 2.7,Python 3.x,Django Rest Framework,我想知道为什么Django REST框架内置文档不显示用户的方法。我只有以下URL可用的列表,创建,读取,更新: url(r'^users$', views.UserList.as_view()), url(r'^users/(?P<user_id>\w+)$', views.UserDetail.as_view()), 但是,下面显示的示例在内置文档中不可见。我在项目中也有大摇大摆的文档,所有内容都正确显示 URL.py: url(r'^users/(?P<user_id&
用户的方法。我只有以下URL可用的列表
,创建
,读取
,更新
:
url(r'^users$', views.UserList.as_view()),
url(r'^users/(?P<user_id>\w+)$', views.UserDetail.as_view()),
但是,下面显示的示例在内置文档中不可见。我在项目中也有大摇大摆的文档,所有内容都正确显示
URL.py:
url(r'^users/(?P<user_id>[0-9]+)/object$', views.UserObject.as_view()),
应该有可见的路径users/{user\u id}/object
知道为什么没有吗
编辑2017-08-19
我已经做了一个已经合并的。所以可能会尝试获取最新版本
编辑2017-08-13
这是一个带有DRF默认文档的文档,其中带有多个方法的额外操作不会显示在文档中
解决方案:使用
原创
我试着复制它,看起来在django rest框架的coreapi
中有一个bug
我尝试过rest框架的文档生成器,它看起来不错
如果从users/{user\u id}/object
中删除object
,则url中有一个bug,它可以工作。例如,如果您尝试xsers/{user\u id}/
,它将起作用
可以使用视图集更改设计方法。
ViewSet提供操作
,而不是直接映射到方法
。这是另一个抽象层次,通常更清晰
class UserViewSet(viewsets.ViewSet):
"""
retrieve:
Return the given user.
list:
Return a list of all the existing users.
create:
Create a new user instance.
update:
Update a user.
"""
serializer_class = UserSerializer
def list(self, request):
# Here you should put the code for GET user/
pass
def create(self, request):
# Here you should put the code for POST user/
pass
def retrieve(self, request, pk=None):
# Here you should put the code for RETRIEVE user/{pk}
pass
def update(self, request, pk=None):
# Here you should put the code for UPDATE user/{pk}
pass
@detail_route(methods=['get'])
def objects(self, request, pk=None):
if request.method == 'GET'
....
在你的网址上
from myapp.views import UserViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'users', UserViewSet)
urlpatterns = router.urls
更多信息嘿,我不太清楚哪些url有效,哪些无效。UserObject
不工作吗?你还有其他人在工作吗?您是否尝试过完全按照文档所说的方式进行文档记录:您是说,当您访问Swagger文档页面时,所有内容都按照预期进行了文档记录,但是当您访问端点本身时,您没有看到DRF GUI?还是别的什么?@willemes只有url(r'^users/(?P[0-9]+)/object$,views.UserObject.as_view())有问题,
其余部分工作正常。@YPCrumble我只看到url(r'^users/(?P[0-9]+)/object$,views.UserObject.as_view()),
其余部分如更新问题中的屏幕截图所示。现在,请尝试更改文档生成器工具,而不是使用drf默认工具,尝试使用swagger,我已经在那里提供了链接,它说明了如何安装和配置,非常直截了当。我现在有swagger文档,但我也想使用drf。我想到的唯一想法是,如果您要求我,尝试为所有以/users
开头的路径创建一个视图。。。我将使用一个视图集,其中定义列表
(对于GET user/),创建
(对于POST user/),检索
(对于GET user/{pk})和更新
(对于补丁用户/{pk},最后一个url中的对象
是用户
资源中的一个操作
,因此您应该定义一个详细路径
,在这里检查如何使用,这样,文档将正确生成。不幸的是,我尝试使用视图集
进行操作,但没有结果。我以前从未使用过它,所以我很抱歉我不知道如何才能实现我的目标。让我们一起来。
class UserViewSet(viewsets.ViewSet):
"""
retrieve:
Return the given user.
list:
Return a list of all the existing users.
create:
Create a new user instance.
update:
Update a user.
"""
serializer_class = UserSerializer
def list(self, request):
# Here you should put the code for GET user/
pass
def create(self, request):
# Here you should put the code for POST user/
pass
def retrieve(self, request, pk=None):
# Here you should put the code for RETRIEVE user/{pk}
pass
def update(self, request, pk=None):
# Here you should put the code for UPDATE user/{pk}
pass
@detail_route(methods=['get'])
def objects(self, request, pk=None):
if request.method == 'GET'
....
from myapp.views import UserViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'users', UserViewSet)
urlpatterns = router.urls