Django rest framework 路由器“详细信息”路由中是否需要查找字段?
查看这里:示例有Django rest framework 路由器“详细信息”路由中是否需要查找字段?,django-rest-framework,django-rest-viewsets,Django Rest Framework,Django Rest Viewsets,查看这里:示例有pk=None: @detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf]) def set_password(self, request, pk=None): 并表示将生成以下url模式:^users/{pk}/set_password/$ 在这里:它还表示lookup字段位于url:{prefix}/{lookup}/{methodname}/ DRF是否将lookup值传递给detail\u
pk=None
:
@detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf])
def set_password(self, request, pk=None):
并表示将生成以下url模式:^users/{pk}/set_password/$
在这里:它还表示lookup
字段位于url:{prefix}/{lookup}/{methodname}/
DRF是否将lookup
值传递给detail\u route
方法?根据文档,看起来是这样的,但在这里:
如果向下滚动到:
@detail_route()
def group_names(self, request):
"""
Returns a list of all the group names that the given
user belongs to.
"""
user = self.get_object()
groups = user.groups.all()
return Response([group.name for group in groups])
不要求将查找值作为group\u names
函数的参数。我的问题是:
1) pk
/在详细信息\u路线中是否需要查找字段参数
2) 如果没有,那么self.get_object()
如何知道要获取哪个对象
3) 此外,如果没有,那么不应该使用@list\u route
,因为甚至没有使用查找
编辑:在这里:它还表示@detail\u路由装饰器在其URL模式中包含pk,用于需要单个实例的方法。
1) 详细信息路由中是否需要pk/a查找字段参数
对。感谢您发现它,它已在存储库中修复,并将在下次生成文档时更新
2) 如果没有,那么self.get_object()如何知道要获取哪个对象
视图的参数/关键字参数存储在get_对象使用的view.args
和view.kwargs
中
3) 此外,如果没有,那么不应该使用@list_路由,因为甚至没有使用查找
它是通过self.get_对象使用的,该对象返回相关的用户,因此它是一个细节路由