路由器“detail_route”中是否需要查找字段?
Is a lookup field required in a routers `detail_route`?
看这里:http://www.django-rest-framework.org/api-guide/routers/#extra-link-and-actions例子有pk=None
:
@detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf])
def set_password(self, request, pk=None):
并表示将生成以下 url 模式:^users/{pk}/set_password/$
在这里:http://www.django-rest-framework.org/api-guide/routers/#simplerouter它还说 lookup
字段在 url 中:{prefix}/{lookup}/{methodname}/
DRF 是否将 lookup
值传递给 detail_route
方法?根据文档,看起来确实如此,但在这里:http://www.django-rest-framework.org/api-guide/routers/#example
如果您向下滚动到:
@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_names
函数的参数。我的问题是:
1) pk
/ detail_route
中是否需要查找字段参数?
2) 如果不是,那么 self.get_object()
如何知道要获取哪个对象?
3) 此外,如果没有,那么不应该使用 @list_route
代替,因为甚至没有使用查找?
编辑:在这里:http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing 它也说 The @detail_route decorator contains pk in its URL pattern and is intended for methods which require a single instance.
1) Is pk / a lookup field argument required in a detail_route?
是的。感谢您发现它,它已修复在存储库中,并将在下次生成文档时更新。
2) If not, then how does self.get_object() know which object to get?
视图的参数/关键字参数存储在 get_object 使用的 view.args
和 view.kwargs
中。
3) Also, if not, then shouldn't @list_route be used instead since a lookup is not even being used?
已通过 self.get_object returns 关联用户使用,因此它是 detail_route。
看这里:http://www.django-rest-framework.org/api-guide/routers/#extra-link-and-actions例子有pk=None
:
@detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf])
def set_password(self, request, pk=None):
并表示将生成以下 url 模式:^users/{pk}/set_password/$
在这里:http://www.django-rest-framework.org/api-guide/routers/#simplerouter它还说 lookup
字段在 url 中:{prefix}/{lookup}/{methodname}/
DRF 是否将 lookup
值传递给 detail_route
方法?根据文档,看起来确实如此,但在这里:http://www.django-rest-framework.org/api-guide/routers/#example
如果您向下滚动到:
@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_names
函数的参数。我的问题是:
1) pk
/ detail_route
中是否需要查找字段参数?
2) 如果不是,那么 self.get_object()
如何知道要获取哪个对象?
3) 此外,如果没有,那么不应该使用 @list_route
代替,因为甚至没有使用查找?
编辑:在这里:http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing 它也说 The @detail_route decorator contains pk in its URL pattern and is intended for methods which require a single instance.
1) Is pk / a lookup field argument required in a detail_route?
是的。感谢您发现它,它已修复在存储库中,并将在下次生成文档时更新。
2) If not, then how does self.get_object() know which object to get?
视图的参数/关键字参数存储在 get_object 使用的 view.args
和 view.kwargs
中。
3) Also, if not, then shouldn't @list_route be used instead since a lookup is not even being used?
已通过 self.get_object returns 关联用户使用,因此它是 detail_route。