Django REST Framework как разрешить DELETE только без pk
Мне нужно создать конечную точку:
DELETE /users
(удаленные идентификаторы в теле запроса)
Итак, я создал класс UserViewSet
, который расширяет mixins.DestroyModelMixin
и GenericViewSet
и реализовал метод def delete(self, request)
, он работает для запроса DELETE /users
, но проблема в том, что пользователь может отправить DELETE /users/5
запрос и тогда я получаю ошибку "Не найдено".
Я хочу запретить отправку запросов DELETE /users/{id}
и разрешить только DELETE /users
.
Как я могу это сделать?
Я пытался использовать декоратор @action(methods=['delete'], detail=True)
для метода delete, но это ничего не меняет.
Также я пытался использовать эту подпись:
def delete(self, request, pk=None):
if pk:
return Response(data='PK is not allowed in DELETE method')
По какой-то причине он даже не сопоставляет этот метод с DELETE/{id}
и я все равно получаю ошибку "Not found".
UPD. Я удалил mixins.DestroyModelMixin
из классов extend и теперь DELETE /users
работает, но DELETE/{id}
выдает мне 404 (Страница не найдена), когда я пытаюсь отправить DELETE с id.
Я бы хотел что-то вроде метод не разрешен
Вы получаете 404 (Page not found)
, потому что у вас нет /users/<int:id>
в URLConf.