Атрибут status_code

Атрибут status_code класса HttpResponse позволяет управлять HTTP-кодом состояния, который возвращается клиенту. Он доступен для чтения и записи, что дает возможность динамически изменять код ответа в процессе обработки запроса. Атрибут принимает целочисленные значения, соответствующие стандартным HTTP-кодам состояния, таким как 200 (OK), 404 (Not Found), 403 (Forbidden) и другим. При создании объекта HttpResponse вы можете указать код состояния через одноименный параметр в конструкторе. Если код не указан явно, будет использовано значение по умолчанию 200.

Синтаксис

pythonresponse = HttpResponse(content="Текст ответа", status_code=200)

# Получение текущего кода состояния
code = response.status_code

# Установка нового кода состояния
response.status_code = 404

Пример

Давайте создадим ответ с кодом состояния 201 (Created), который обычно используется при успешном создании ресурса:

pythonfrom django.http import HttpResponse

def create_article(request):
  # Создание статьи (логика опущена)
  response = HttpResponse("Article created successfully", status_code=201)
  return response

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

python"Article created successfully"

Пример

Давайте изменим код состояния существующего объекта ответа в зависимости от условий:

pythonfrom django.http import HttpResponse

def get_article(request, article_id):
  # Проверка наличия статьи
  article = get_article_from_db(article_id)
  
  if article:
    response = HttpResponse("Article found")
    response.status_code = 200
  else:
    response = HttpResponse("Article not found")
    response.status_code = 404
  
  return response

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

python"Article found"

Пример

Давайте используем атрибут status_code для обработки ошибок при доступе к ресурсу:

pythonfrom django.http import HttpResponse

def check_access(request):
  user = request.user
  
  if not user.is_authenticated:
    response = HttpResponse("Unauthorized access")
    response.status_code = 401
  elif not user.is_active:
    response = HttpResponse("Account is inactive")
    response.status_code = 403
  else:
    response = HttpResponse("Welcome to the resource")
    response.status_code = 200
  
  return response

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

python"Welcome to the resource"

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

  • атрибут content,
    который используется для получения или установки тела ответа
  • класс HttpResponseRedirect,
    который возвращает ответ с кодом 302 и выполняет перенаправление
  • класс HttpResponseNotFound,
    который возвращает ответ с кодом состояния 404
  • класс HttpResponsePermanentRedirect,
    который возвращает ответ с кодом 301 и выполняет постоянное перенаправление