Я пытаюсь использовать Django Rest Framework для выполнения дополнительного действия из набора представлений. В URL-адресах у меня есть:
router = SimpleRouter()
router.register(r'mymodels', MyModelViewSet, basename='mymodel')
urlpatterns = [
url(r'', include(router.urls)),
]
И в views.py
:
class MyModelViewSet(ListModelMixin, GenericViewSet):
serializer_class = MyModelSerializer
Так что я могу отправить GET /mymodel/
запрос. Я хотел бы иметь возможность отправлять PATCH /mymodel/
, но не знаю, как настроить действие. В настоящее время у меня есть:
class MyModelViewSet(ListModelMixin, GenericViewSet):
serializer_class = MyModelSerializer
allowed_http_methods = ['get', 'patch']
@action(methods=['patch'], detail=False, url_path='', suffix='')
def some_action(self, request: Request) -> Response:
# do some stuff
return Response()
Однако у меня есть 405 method not allowed
ответ. Я могу отправлять данные с помощью PATCH /mymodel/some-action/
, но мне нужно избавиться от последней части URL-адреса.
PATCH api/my_api/
, второй -PARCH api/my_api/id/
. Верно? Или вы хотите иметь только первый? - person ncopiy   schedule 27.05.2020delete
наpatch
в декораторе и имени функции - person ncopiy   schedule 27.05.2020