1

ここを見てください: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-routingThe @detail_route decorator contains pk in its URL pattern and is intended for methods which require a single instance.

4

1 に答える 1