1

我在我的 ModelViewSet 上添加了一个装饰方法。它没有按我的预期工作。我可以浏览到“/customers/1/add”,但“/customers/1/add/1”返回 404。为什么?

from rest_framework import routers, viewsets
from rest_framework.decorators import action
from app1.models import Customer

class CustomerViewSet(viewsets.ModelViewSet):
    model = Customer

    @action()
    def add(self, request, pk=None):
        queryset = Customer.objects.all()

router = routers.DefaultRouter()
router.register(r'customers', CustomerViewSet)
4

1 回答 1

0

当您使用@action@link装饰器时,您可以包含额外的 url 用于基本路由,如 docs 中所述

在文档的末尾,它提到可以在以下位置访问视图resource/:id/method/

这两个新操作将在 ^users/{pk}/set_password/$ 和 ^users/{pk}/unset_password/$ url 上可用

-- Django 请求框架文档

这是硬编码到路由器中的。

于 2013-09-28T19:55:39.990 回答