Метод Django / DRF-405 не разрешен при операции удаления
Я работаю с двумя серверами dev на моей локальной машине (node & django).
я добавил django-cors-headers
к проекту разрешить все origins & methods (on dev) со следующими настройками :
CORS_ORIGIN_ALLOW_ALL = 'ALL'
CORS_ALLOW_METHODS = (
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
)
Я получаю 405 при попытке удалить. Глядя на заголовки ответов
HTTP/1.0 405 METHOD NOT ALLOWED
Date: Mon, 03 Nov 2014 10:04:43 GMT
Server: WSGIServer/0.1 Python/2.7.5
Vary: Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Access-Control-Allow-Origin: *
Allow: GET, POST, HEAD, OPTIONS
обратите внимание, что DELETE
& PATCH
/ PUT
нет в списке разрешенных методов.
чего-то не хватает в моем конфигурация ?
2 ответов
ответ выглядит очень похоже до посмотреть список (/api/resource/
) для ViewSet. Список просмотров поддерживает только GET
, чтобы перечислить все объекты, и POST
для создания нового объекта.
DELETE
запросы разрешены только на вид (/api/resource/1/
). Это связано с тем, что Django Rest Framework должен знать, какой объект вы хотите удалить, и эта информация не может быть получена только из списка.
Если вам нужно подключить метод http DELETE с URL без pk в DRF попробуйте это внутри вашего ModelViewSet:
@action(methods=['delete'], detail=False)
def delete(self, request):
# your code