В Django HttResponse нет attr status_code, но в документации есть :)

Я использую стандартный httpresponse django, вот так:

return HttpResponse("Validation Error", status_code=400)

И я получаю исключение типа "HttpResponse не имеет атрибута status_code". Но в документации есть информация об этом атрибуте (docs link)

Если мы посмотрим на исходный код, то увидим:

class HttpResponse(HttpResponseBase):
    ...
    def __init__(self, content=b'', *args, **kwargs):
        super().__init__(*args, **kwargs)
        # Content is a bytestring. See the `content` property methods.
        self.content = content
...

Не явное использование status_code, давайте посмотрим родительский init:

class HttpResponseBase:

    def __init__(self, content_type=None, status=None, reason=None, charset=None, headers=None):
...
        if status is not None:
            try:
                self.status_code = int(status)
            except (ValueError, TypeError):
                raise TypeError('HTTP status code must be an integer.')

            if not 100 <= self.status_code <= 599:
                raise ValueError('HTTP status code must be an integer from 100 to 599.')
        self._reason_phrase = reason

И здесь в params мы видим status.

Если вернуться к моему примеру, то правильная версия выглядит так:

return HttpResponse("Validation Error", status=400)

И мой вопрос: "Есть ли место в документации, где говорилось о status HttpResponse и если нет, то как я могу сделать проблему или донести эту информацию до django-разработчиков?"

Как я вижу, это недостаточно очевидно.

status_code является атрибутом HttpResponse это означает, что если вы хотите узнать статус ответа, вы можете вывести status_code объекта HttpResponse следующим образом

resp = HttpResponse()
print(resp.status_code)

и в документе в этом разделе говорится о методах и аргументах

например здесь говорится об аргументе status в HttpResponse

Вернуться на верх