РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
367 of 818 menu

Класс HttpResponseNotAllowed

Класс HttpResponseNotAllowed применяется для формирования HTTP-ответа с кодом состояния 405, который указывает, что запрошенный метод HTTP не поддерживается для данного ресурса. Конструктор класса принимает обязательный аргумент allowed_methods - список разрешенных методов, который используется для формирования заголовка Allow в ответе. Также можно передать необязательный аргумент content для задания тела ответа и аргументы *args и **kwargs для передачи дополнительных параметров в родительский класс HttpResponse.

Синтаксис

HttpResponseNotAllowed(allowed_methods, content=b'', *args, **kwargs)

Пример

Давайте создадим представление, которое разрешает только GET-запросы и возвращает ответ с кодом 405 для других методов:

from django.http import HttpResponseNotAllowed from django.http import HttpResponse def my_view(request): if request.method == 'GET': return HttpResponse("This is a GET response") else: return HttpResponseNotAllowed(['GET'])

Результат выполнения кода при POST-запросе:

"HTTP/1.1 405 Method Not Allowed" "Allow: GET" "Method Not Allowed: POST"

Пример

Давайте создадим представление, которое разрешает только GET и POST запросы:

from django.http import HttpResponseNotAllowed from django.http import HttpResponse def my_view(request): if request.method == 'GET': return HttpResponse("GET response") elif request.method == 'POST': return HttpResponse("POST response") else: return HttpResponseNotAllowed(['GET', 'POST'])

Результат выполнения кода при DELETE-запросе:

"HTTP/1.1 405 Method Not Allowed" "Allow: GET, POST"

Пример

Давайте создадим представление с кастомным сообщением в теле ответа:

from django.http import HttpResponseNotAllowed from django.http import HttpResponse def my_view(request): if request.method == 'GET': return HttpResponse("Data retrieved successfully") else: return HttpResponseNotAllowed( ['GET'], content=b'Only GET method is allowed for this endpoint' )

Результат выполнения кода при PUT-запросе:

"HTTP/1.1 405 Method Not Allowed" "Allow: GET" "Only GET method is allowed for this endpoint"

Смотрите также

  • декоратор require_http_methods,
    который ограничивает доступные методы запроса
  • класс HttpResponse,
    который является базовым классом для всех HTTP-ответов
  • класс HttpResponseForbidden,
    который возвращает ответ с кодом 403 Forbidden
  • класс HttpResponseNotFound,
    который возвращает ответ с кодом 404 Not Found
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить