Атрибут status_code
Атрибут status_code класса HttpResponse позволяет управлять HTTP-кодом состояния,
который возвращается клиенту. Он доступен для чтения и записи, что дает возможность
динамически изменять код ответа в процессе обработки запроса. Атрибут принимает
целочисленные значения, соответствующие стандартным HTTP-кодам состояния,
таким как 200 (OK), 404 (Not Found), 403 (Forbidden) и другим.
При создании объекта HttpResponse вы можете указать код состояния
через одноименный параметр в конструкторе. Если код не указан явно,
будет использовано значение по умолчанию 200.
Синтаксис
response = HttpResponse(content="Текст ответа", status_code=200)
# Получение текущего кода состояния
code = response.status_code
# Установка нового кода состояния
response.status_code = 404
Пример
Давайте создадим ответ с кодом состояния 201 (Created), который обычно используется
при успешном создании ресурса:
from django.http import HttpResponse
def create_article(request):
# Создание статьи (логика опущена)
response = HttpResponse("Article created successfully", status_code=201)
return response
Результат выполнения кода:
"Article created successfully"
Пример
Давайте изменим код состояния существующего объекта ответа в зависимости от условий:
from 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
Результат выполнения кода:
"Article found"
Пример
Давайте используем атрибут status_code для обработки ошибок
при доступе к ресурсу:
from 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
Результат выполнения кода:
"Welcome to the resource"
Смотрите также
-
атрибут
content,
который используется для получения или установки тела ответа -
класс
HttpResponseRedirect,
который возвращает ответ с кодом302и выполняет перенаправление -
класс
HttpResponseNotFound,
который возвращает ответ с кодом состояния404 -
класс
HttpResponsePermanentRedirect,
который возвращает ответ с кодом301и выполняет постоянное перенаправление