Объекты запроса/ответа
Объекты запроса и ответа оборачивают среду WSGI или возвращаемое значение приложения WSGI, превращая его в другое приложение WSGI (обрамляя всё приложение целиком).
Как они работают
Ваше приложение WSGI всегда получает два аргумента. WSGI «среда» и WSGI start_response функция, используемая для запуска фазы ответа. Класс Request оборачивает environ для более удобного доступа к переменным запроса (данные формы, заголовки запроса и т. д.).
С другой стороны, Response — стандартное приложение WSGI, которое вы можете создать. Простой «привет мир» на Werkzeug выглядит так:
from werkzeug.wrappers import Response
application = Response('Hello World!')
Чтобы сделать его более полезным, вы можете заменить его функцией и выполнить некоторую обработку:
from werkzeug.wrappers import Request, Response
def application(environ, start_response):
request = Request(environ)
response = Response(f"Hello {request.args.get('name', 'World!')}!")
return response(environ, start_response)
Поскольку это очень распространённая задача, объект Request предоставляет для этого вспомогательную функцию. Приведённый выше код можно переписать так:
from werkzeug.wrappers import Request, Response
@Request.application
def application(request):
return Response(f"Hello {request.args.get('name', 'World!')}!")
application по-прежнему является допустимым приложением WSGI, которое принимает среду и start_response вызываемую функцию.
Изменяемость и повторное использование обёртки
Реализация объектов запроса и ответа Werkzeug пытается оградить вас от распространённых ошибок, запрещая определённые действия по мере возможности. Это служит двум целям: высокой производительности и предотвращения ошибок.
Для объекта запроса применяются следующие правила:
- Объект запроса неизменяемый. Изменения по умолчанию не поддерживаются, но вы можете заменить неизменяемые атрибуты на изменяемые, если вам нужно его изменить.
- Объект запроса может быть общим в рамках одного потока, но сам по себе не потокобезопасен. Если вам нужно получить к нему доступ из нескольких потоков, используйте блокировки вокруг вызовов.
- Невозможно выполнить сериализацию объекта запроса с помощью pickle.
Для объекта ответа применяются следующие правила:
- Объект ответа изменяемый.
- Объект ответа можно сериализовать с помощью pickle или скопировать после вызова
freeze(). - Начиная с Werkzeug 0.6, безопасно использовать один и тот же объект ответа для нескольких ответов WSGI.
- Можно создавать копии, используя
copy.deepcopy.
Классы-обертки
-
class werkzeug.wrappers.Request(environ, populate_request=True, shallow=False) -
Представляет входящий WSGI HTTP-запрос с заголовками и телом, взятыми из WSGI-окружения. Имеет свойства и методы для использования функциональности, определенной различными спецификациями HTTP. Данные в объекте запроса являются только для чтения.
Предполагается, что текстовые данные используют кодировку UTF-8, что должно быть верно для подавляющего большинства современных клиентов. Использование кодировки, установленной клиентом, небезопасно в Python из-за дополнительных кодировок, которые он предоставляет, таких как
zip. Чтобы изменить предполагаемую кодировку, создайте подкласс и заменитеcharset.- Параметры
-
- environ (WSGIEnvironment) – WSGI-окружение генерируется WSGI-сервером и содержит информацию о конфигурации сервера и запросе клиента.
-
populate_request (bool) – Добавляет этот объект запроса в WSGI-окружение в качестве
environ['werkzeug.request']. Может быть полезно при отладке. -
shallow (bool) – При чтении из
stream(и любого метода, который бы читал из него) вызываетRuntimeError. Полезно для предотвращения потребления данных формы в middleware, что сделает их недоступными для конечного приложения.
- Тип возвращаемого значения
Изменено в версии 2.0: Объединение
BaseRequestи миксинов в один классRequest. Использование старых классов устарело и будет удалено в Werkzeug 2.1.Изменения
Изменено в версии 0.5: Режим только для чтения применяется с помощью неизменяемых классов для всех данных.
-
_get_file_stream(total_content_length, content_type, filename=None, content_length=None) -
Вызывается для получения потока для загрузки файла.
Это должно предоставить похожий на файл класс с методами
read(),readline()иseek(), который одновременно является записываемым и читаемым.По умолчанию реализация возвращает временный файл, если общая длина содержимого больше 500 КБ. Так как многие браузеры не предоставляют длину содержимого для файлов, важна только общая длина содержимого.
- Параметры
-
- total_content_length (Optional[int]) – общая длина содержимого всех данных в запросе вместе. Это значение гарантированно присутствует.
- content_type (Optional[str]) – тип MIME загружаемого файла.
-
filename (Optional[str]) – имя файла загружаемого файла. Может быть
None. - content_length (Optional[int]) – длина этого файла. Это значение обычно не предоставляется, так как веб-браузеры не предоставляют эту информацию.
- Тип возвращаемого значения
-
BinaryIO
-
property accept_charsets: werkzeug.datastructures.CharsetAccept -
Список кодировок символов, поддерживаемых этим клиентом, как объект
CharsetAccept.
-
property accept_encodings: werkzeug.datastructures.Accept -
Список кодировок, принимаемых этим клиентом. Кодировки в терминологии HTTP — это кодировки сжатия, такие как gzip. Для кодировок символов см.
accept_charset.
-
property accept_languages: werkzeug.datastructures.LanguageAccept -
Список языков, которые принимает этот клиент, как объект
LanguageAccept.
-
property accept_mimetypes: werkzeug.datastructures.MIMEAccept -
Список MIME-типов, поддерживаемых этим клиентом, как объект
MIMEAccept.
-
access_control_request_headers -
Отправляется с предварительным запросом для указания заголовков, которые будут отправлены с запросом к другому источнику. Установите
access_control_allow_headersв ответе, чтобы указать разрешенные заголовки.
-
access_control_request_method -
Отправляется с предварительным запросом, чтобы указать метод, который будет использоваться для запроса к другому источнику. Установите
access_control_allow_methodsв ответе, чтобы указать разрешенные методы.
-
property access_route: List[str] -
Если заголовок переадресации существует, это список всех IP-адресов от IP-адреса клиента до последнего прокси-сервера.
-
classmethod application(f) -
Декорирует функцию как обработчик, принимающий запрос в качестве последнего аргумента. Это работает как декоратор
responder(), но функции передается объект запроса в качестве последнего аргумента, и объект запроса будет автоматически закрыт:@Request.application def my_wsgi_app(request): return Response('Hello World!')Начиная с Werkzeug 0.14, HTTP-исключения автоматически перехватываются и преобразуются в ответы вместо отказа.
- Параметры
-
f (Callable[[Запрос], WSGIApplication]) – вызываемая WSGI-функция для декорирования
- Возвращает
-
новая вызываемая WSGI-функция
- Тип возвращаемого значения
-
WSGIApplication
-
property args: MultiDict[str, str] -
Анализируемые параметры URL (часть в URL после вопросительного знака).
По умолчанию функция возвращает
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.
-
property authorization: Optional[werkzeug.datastructures.Authorization] -
Объект
Authorizationв обработанном виде.
-
property base_url: str -
Подобно
url, но без строки запроса.
-
property cache_control: werkzeug.datastructures.RequestCacheControl -
Объект
RequestCacheControlдля входящих заголовков управления кэшем.
-
close() -
Закрывает связанные ресурсы этого объекта запроса. Это закрывает все дескрипторы файлов явно. Вы также можете использовать объект запроса в операторе with, который автоматически закроет его.
Изменения
Добавлено в версии 0.9.
- Тип возвращаемого значения
-
content_encoding -
Поле заголовка сущности Content-Encoding используется как модификатор типа носителя. Если оно присутствует, его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования необходимо применить для получения типа носителя, указанного в поле Content-Type.
Изменения
Добавлено в версии 0.9.
-
property content_length: Optional[int] -
Поле заголовка сущности Content-Length указывает размер тела сущности в байтах или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_md5 -
Поле заголовка сущности Content-MD5, определённое в RFC 1864, представляет собой хеш-код MD5 тела сущности, предназначенный для проверки целостности сообщения сущности от начала до конца (MIC). (Примечание: MIC подходит для обнаружения случайных изменений тела сущности во время передачи, но не является защитой от злонамеренных атак.)
Журнал изменений
Введено в версии 0.9.
-
content_type -
Поле заголовка сущности Content-Type указывает на тип носителя тела сущности, отправленного получателю или, в случае метода HEAD, тип носителя, который был бы отправлен, если бы запрос был методом GET.
-
property cookies: ImmutableMultiDict[str, str] -
Словарь
dictс содержимым всех файлов cookie, переданных с запросом.
-
property data: bytes -
Содержит данные входящего запроса в виде строки в случае, если они были отправлены с типом mime, который Werkzeug не обрабатывает.
-
date -
Поле общего заголовка Date представляет дату и время возникновения сообщения, имеющее такие же семантические значения, как и orig-date в RFC 822.
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
dict_storage_class
-
disable_data_descriptor: Optional[bool] = None -
Отключить свойство
dataдля предотвращения чтения из потока ввода.Устарело начиная с версии 2.0: Будет удалено в Werkzeug 2.1. Создайте запрос с помощью
shallow=Trueвместо этого.Журнал изменений
Введено в версии 0.9.
-
environ: WSGIEnvironment -
WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.
-
property files: ImmutableMultiDict[str, FileStorage] -
Объект
MultiDict, содержащий все загруженные файлы. Каждый ключ вfiles— имя из<input type="file" name="">. Каждое значение вfiles— объект WerkzeugFileStorage.В основном он ведет себя как стандартный объект файла, знакомый вам по Python, с той разницей, что у него также есть функция
save(), которая может сохранить файл на файловой системе.Обратите внимание, что
filesбудет содержать данные только в том случае, если метод запроса был POST, PUT или PATCH, и<form>, отправленный в запрос, имелenctype="multipart/form-data". В противном случае он будет пустым.См. документацию
MultiDict/FileStorageдля получения дополнительной информации о используемой структуре данных.
-
property form: ImmutableMultiDict[str, str] -
Параметры формы. По умолчанию из этой функции возвращается
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.Пожалуйста, имейте в виду, что загрузки файлов не будут здесь, а вместо этого в атрибуте
files.Журнал изменений
Изменено в версии 0.9: В предыдущих версиях Werkzeug 0.9 это содержало бы только данные формы для запросов POST и PUT.
-
form_data_parser_class -
Псевдоним
werkzeug.formparser.FormDataParser
-
classmethod from_values(*args, **kwargs) -
Создаёт новый объект запроса на основе предоставленных значений. Если указана среда, пропущенные значения заполняются из неё. Этот метод полезен для небольших скриптов, когда вам нужно смоделировать запрос из URL. Не используйте этот метод для тестирования модулей, есть полноценный объект клиента (
Client), который позволяет создавать запросы multipart, поддерживает файлы cookie и т.д.Он принимает те же параметры, что и
EnvironBuilder.Журнал изменений
Изменено в версии 0.5: Этот метод теперь принимает те же аргументы, что и
EnvironBuilder. Из-за этого параметрenvironтеперь называетсяenviron_overrides.- Возвращает
-
объект запроса
- Параметры
-
- args (Любой тип) –
- kwargs (Любой тип) –
- Тип возвращаемого значения
-
property full_path: str -
Запрашиваемый путь, включая строку запроса.
-
get_data(cache=True, as_text=False, parse_form_data=False) -
Этот метод считывает буферизованные входящие данные от клиента в один байтовый объект. По умолчанию он кэшируется, но это поведение можно изменить, установив
cacheвFalse.Как правило, не рекомендуется вызывать этот метод без предварительной проверки длины содержимого, так как клиент может отправить десятки мегабайт или более, что может вызвать проблемы с памятью на сервере.
Обратите внимание, что если данные формы уже обработаны, этот метод ничего не вернёт, так как обработка данных формы не кэширует данные, в отличие от этого метода. Чтобы неявно вызвать функцию обработки данных формы, установите
parse_form_dataвTrue. В этом случае возвращаемое значение этого метода будет пустой строкой, если обработчик формы обрабатывает данные. Как правило, это не требуется, так как если все данные кэшируются (что является по умолчанию), обработчик формы будет использовать кэшированные данные для обработки данных формы. Пожалуйста, всегда проверяйте длину содержимого перед вызовом этого метода, чтобы избежать исчерпания памяти сервера.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Журнал изменений
Введено в версии 0.9.
-
-
get_json(force=False, silent=False, cache=True) -
Разбор
dataв формате JSON.Если тип MIME не указывает на JSON (application/json, см.
is_json()), это возвращаетNone.Если разбор завершается ошибкой, вызывается
on_json_loading_failed(), и её значение используется в качестве результата.
-
headers -
Заголовки, полученные с запросом.
-
property host: str -
Имя хоста, к которому был отправлен запрос, включая порт, если он нестандартный. Проверяется с помощью
trusted_hosts.
-
property host_url: str -
Схема и имя хоста URL запроса.
-
property if_match: werkzeug.datastructures.ETags -
Объект, содержащий все значения ETag в заголовке
If-Match.- Тип возвращаемого значения
-
property if_modified_since: Optional[datetime.datetime] -
Разбор заголовка
If-Modified-Sinceв формате datetime.Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
property if_none_match: werkzeug.datastructures.ETags -
Объект, содержащий все значения ETag в заголовке
If-None-Match.- Тип возвращаемого значения
-
property if_range: werkzeug.datastructures.IfRange -
Разбор заголовка
If-Range.Изменено в версии 2.0:
IfRange.dateучитывает часовой пояс.Changelog
Добавлено в версии 0.7.
-
property if_unmodified_since: Optional[datetime.datetime] -
Разбор заголовка
If-Unmodified-Sinceв формате datetime.Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
input_stream -
Поток ввода WSGI.
В общем случае его использование нежелательно, так как можно легко прочитать данные за границу. Используйте
streamвместо него.
-
property is_json: bool -
Проверка, указывает ли тип MIME на данные в формате JSON, либо application/json, либо application/*+json.
-
is_multiprocess -
булево значение,
Trueесли приложение обслуживается сервером WSGI, который запускает несколько процессов.
-
is_multithread -
булево значение,
Trueесли приложение обслуживается многопоточным сервером WSGI.
-
is_run_once -
булево значение,
Trueесли приложение будет выполнено только один раз за время жизни процесса. Например, это характерно для CGI, но не гарантируется, что выполнение произойдёт только один раз.
-
property is_secure: bool -
Trueесли запрос был отправлен с помощью защищённого протокола (HTTPS или WSS).
-
property json: Optional[Any] -
Разобранные данные в формате JSON, если
mimetypeуказывает на JSON (application/json, см.is_json()).Вызывает
get_json()с параметрами по умолчанию.
-
json_module = <module 'json' from '/home/docs/.pyenv/versions/3.7.9/lib/python3.7/json/__init__.py'> -
Модуль или другой объект, имеющий функции
dumpsиloadsсоответствующие API встроенного модуляjson.
-
list_storage_class -
Псевдоним для
werkzeug.datastructures.ImmutableList
-
make_form_data_parser() -
Создаёт парсер данных формы. Инициализирует
form_data_parser_classс некоторыми параметрами.Changelog
Добавлено в версии 0.8.
- Тип возвращаемого значения
-
max_content_length: Optional[int] = None -
Максимальная длина содержимого. Передаётся в функцию разбора данных формы (
parse_form_data()). При установке и обращении к атрибутуformилиfiles, если разбор завершается ошибкой из-за превышения указанного значения, генерируется исключениеRequestEntityTooLarge.Подробности см. в разделе Обработка данных запроса.
Changelog
Добавлено в версии 0.5.
-
max_form_memory_size: Optional[int] = None -
Максимальный размер поля формы. Передаётся в функцию разбора данных формы (
parse_form_data()). При установке и обращении к атрибутуformилиfiles, если размер данных в памяти для данных POST превышает указанное значение, генерируется исключениеRequestEntityTooLarge.Подробности см. в разделе Обработка данных запроса.
Changelog
Добавлено в версии 0.5.
-
max_forwards -
Поле заголовка запроса Max-Forwards предоставляет механизм для методов TRACE и OPTIONS, ограничивающий количество прокси или шлюзов, которые могут пересылать запрос следующему серверу.
-
-
method -
Метод, с помощью которого был выполнен запрос, например
GET.
-
property mimetype: str -
Как
content_type, но без параметров (например, без набора символов, типа и т. д.) и всегда в нижнем регистре. Например, если тип содержимогоtext/HTML; charset=utf-8, то mimetype будет'text/html'.
-
property mimetype_params: Dict[str, str] -
Параметры mimetype в виде словаря. Например, если тип содержимого
text/html; charset=utf-8, то параметры будут{'charset': 'utf-8'}.
-
on_json_loading_failed(e) -
Вызывается, если разбор
get_json()завершается неудачно и не отключается. Если этот метод возвращает значение, оно используется как возвращаемое значение дляget_json(). По умолчанию реализация вызываетBadRequest.- Parameters
-
e (ValueError) –
- Return type
-
Любое
-
origin -
Хост, с которого исходит запрос. Установите
access_control_allow_originв ответе, чтобы указать разрешенные источники.
-
parameter_storage_class -
Псевдоним для
werkzeug.datastructures.ImmutableMultiDict
-
path -
Часть пути URL после
root_path. Это путь, используемый для маршрутизации в приложении.
-
property pragma: werkzeug.datastructures.HeaderSet -
Поле заголовка общего назначения Pragma используется для включения директив, специфичных для реализации, которые могут применяться к любому получателю вдоль цепочки запроса/ответа. Все директивы Pragma указывают необязательное поведение с точки зрения протокола; однако некоторые системы МОГУТ потребовать, чтобы это поведение соответствовало директивам.
-
query_string -
Часть URL после «?». Это исходное значение. Используйте
argsдля разобранных значений.
-
property range: Optional[werkzeug.datastructures.Range] -
Разбор заголовка
Range.Changelog
В версии 0.7.
- Return type
-
referrer -
Поле заголовка запроса Referer позволяет клиенту указать серверу адрес (URI) ресурса, из которого был получен запрашиваемый URI (то есть «ссылка», хотя в названии поля заголовка допущена опечатка).
-
remote_addr -
Адрес клиента, отправляющего запрос.
-
remote_user -
Если сервер поддерживает аутентификацию пользователя и сценарий защищен, это свойство содержит имя пользователя, с которым пользователь авторизовался.
-
root_path -
Префикс, под которым установлено приложение, без заключительного слэша.
pathследует за ним.
-
property root_url: str -
Схема, хост и корневой путь URL запроса. Это корень, с которого осуществляется доступ к приложению.
-
scheme -
Схема URL протокола, использованного запросом, например
httpsилиwss.
-
property script_root: str -
Псевдоним для
self.root_path.environ["SCRIPT_ROOT"]без заключительного слэша.
-
server -
Адрес сервера.
(host, port),(path, None)для сокетов Unix илиNone, если неизвестно.
-
shallow: bool -
Устанавливается при создании объекта запроса. Если
True, чтение из тела запроса вызоветRuntimeException. Полезно для предотвращения изменения потока из среды.
-
property stream: BinaryIO -
Если данные формы входящих данных не были закодированы известным типом mime, данные сохраняются в этом потоке в неизмененном виде для использования. В большинстве случаев лучше использовать
data, который предоставит эти данные в виде строки. Поток возвращает данные только один раз.В отличие от
input_stream, этот поток должным образом защищен от случайного чтения за пределы длины входных данных. Werkzeug всегда обращается к этому потоку для чтения данных, что позволяет обернуть этот объект потоком, выполняющим фильтрацию.Changelog
Изменено в версии 0.9: Этот поток теперь всегда доступен, но может быть прочитан парсером формы позже. Ранее поток устанавливался только если парсинг не происходил.
-
property url: str -
Полный URL запроса со схемой, хостом, корневым путем, путем и строкой запроса.
-
property url_charset: str -
Набор символов, предполагаемый для URL. По умолчанию используется значение
charset.Changelog
В версии 0.6.
-
property url_root: str -
Псевдоним для
root_url. URL со схемой, хостом и корневым путем. Например,https://example.com/app/.
-
property user_agent: werkzeug.user_agent.UserAgent -
Пользовательский агент. Используйте
user_agent.stringдля получения значения заголовка. Установитеuser_agent_classна подклассUserAgent, чтобы предоставить разбор для других свойств или других расширенных данных.Изменено в версии 2.0: Встроенный парсер устарел и будет удален в Werkzeug 2.1. Необходимо установить подкласс
UserAgentдля разбора данных из строки.
-
user_agent_class -
Псевдоним для
werkzeug.useragents._UserAgent
-
property values: CombinedMultiDict[str, str] -
werkzeug.datastructures.CombinedMultiDict, объединяющийargsиform.Для GET-запросов присутствуют только
args, а неform.Изменено в версии 2.0: Для GET-запросов присутствуют только
args, а неform.
-
-
property want_form_data_parsed: bool -
Trueесли метод запроса переносит содержимое. По умолчанию это верно, если отправляетсяContent-Type.Changelog
Добавлено в версии 0.8.
-
-
class werkzeug.wrappers.Response(response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False)
-
Представляет исходящий WSGI HTTP-ответ с телом, кодом состояния и заголовками. Имеет свойства и методы для использования функциональности, определенной различными спецификациями HTTP.
Тело ответа гибкое, чтобы поддерживать различные варианты использования. Простой вариант — передача байтов или строки, которая будет закодирована как UTF-8. Передача итерируемого объекта байтов или строк делает этот ответ потоковым. Генератор особенно полезен для создания CSV-файла в памяти или использования SSE (Server Sent Events). Объект типа файла также итерируемый, хотя в этом случае следует использовать помощник
send_file().Объект ответа сам по себе является вызываемым WSGI-приложением. При вызове (
__call__()) сenvironиstart_response, он передаст свой код состояния и заголовки вstart_response, а затем вернёт своё тело как итерируемый объект.from werkzeug.wrappers.response import Response def index(): return Response("Hello, World!") def application(environ, start_response): path = environ.get("PATH_INFO") or "/" if path == "/": response = index() else: response = Response("Not Found", status=404) return response(environ, start_response)- Параметры
-
- response (Union[Iterable[str], Iterable[bytes]]) – Данные для тела ответа. Строка или байты, или кортеж или список строк или байтов для ответа фиксированной длины, или любой другой итерируемый объект строк или байтов для потокового ответа. По умолчанию пустое тело.
-
status (Optional[Union[int, str, http.HTTPStatus]]) – Код состояния ответа. Целое число, в этом случае добавляется сообщение по умолчанию, или строка в формате
{code} {message}, например404 Not Found. По умолчанию 200. -
headers (werkzeug.datastructures.Headers) – Объект
Headersили список кортежей(key, value), которые будут преобразованы в объектHeaders. -
mimetype (Optional[str]) – Тип MIME (тип контента без кодировки символов или других параметров) ответа. Если значение начинается с
text/(или соответствует другим специальным случаям), кодировка символов будет добавлена для созданияcontent_type. -
content_type (Optional[str]) – Полный тип контента ответа. Переопределяет построение значения из
mimetype. -
direct_passthrough (bool) – Передавать тело ответа непосредственно как WSGI итерируемый объект. Это можно использовать, когда тело является двоичным файлом или другим итератором байтов, чтобы пропустить некоторые ненужные проверки. Используйте
send_file()вместо ручного задания.
- Тип возвращаемого значения
Изменено в версии 2.0: Объединение
BaseResponseи миксинов в один классResponse. Использование старых классов устарело и будет удалено в Werkzeug 2.1.Изменения
Изменено в версии 0.5: Параметр
direct_passthroughбыл добавлен.-
__call__(environ, start_response) -
Обработка этого ответа как WSGI-приложения.
- Параметры
-
- environ (WSGIEnvironment) – WSGI-среда.
- start_response (StartResponse) – вызываемый объект ответа, предоставленный WSGI-сервером.
- Возвращает
-
итератор приложения
- Тип возвращаемого значения
-
Iterable[bytes]
-
_ensure_sequence(mutable=False) -
Этот метод может быть вызван методами, которым требуется последовательность. Если
mutableимеет значение true, он также гарантирует, что последовательность ответа является стандартным списком Python.Изменения
Добавлен в версии 0.6.
-
accept_ranges -
Заголовок
Accept-Ranges. Несмотря на то, что название предполагает поддержку нескольких значений, должен быть только один строковый токен.Общие значения
'bytes'и'none'.Изменения
Добавлен в версии 0.7.
-
property access_control_allow_credentials: bool -
Разрешает ли браузер делиться учётными данными с кодом JavaScript. В рамках предварительного запроса это указывает, можно ли использовать учётные данные для кросс-доменного запроса.
-
access_control_allow_headers -
Какие заголовки можно отправлять с кросс-доменным запросом.
-
access_control_allow_methods -
Какие методы можно использовать для кросс-доменного запроса.
-
access_control_allow_origin -
Происхождение или ‘*’ для любого происхождения, которое может выполнять кросс-доменные запросы.
-
access_control_expose_headers -
Какие заголовки можно делиться браузером с кодом JavaScript.
-
access_control_max_age -
Максимальное время в секундах, в течение которого настройки контроля доступа могут кешироваться.
-
add_etag(overwrite=False, weak=False) -
Добавить значение etag для текущего ответа, если его ещё нет.
Изменено в версии 2.0: Используется SHA-1 для генерации значения. MD5 может быть недоступен в некоторых средах.
-
age -
Поле заголовка ответа Age передаёт оценку отправителя времени, прошедшего с момента генерации ответа (или его перепроверки) на сервере происхождения.
Значения Age — это неотрицательные десятичные целые числа, представляющие время в секундах.
-
property allow: werkzeug.datastructures.HeaderSet -
Поле заголовка Allow указывает набор методов, поддерживаемых ресурсом, идентифицируемым Request-URI. Цель этого поля — сообщить получателю о допустимых методах, связанных с ресурсом. Заголовок Allow ОБЯЗАТЕЛЬНО должен присутствовать в ответе 405 (Метод не разрешён).
-
autocorrect_location_header = True -
Должен ли этот объект ответа исправлять заголовок location, чтобы соответствовать RFC? По умолчанию — true.
Изменения
Добавлен в версии 0.8.
-
automatically_set_content_length = True -
Должен ли этот объект ответа автоматически устанавливать заголовок content-length, если это возможно? По умолчанию — true.
Изменения
Добавлен в версии 0.8.
-
property cache_control: werkzeug.datastructures.ResponseCacheControl -
Поле Cache-Control общего заголовка используется для указания директив, которые ДОЛЖНЫ выполняться всеми механизмами кэширования по цепочке запроса/ответа.
-
calculate_content_length() -
Возвращает длину содержимого, если она доступна, или
Noneв противном случае.- Тип возвращаемого значения
-
Optional[int]
-
call_on_close(func) -
Добавляет функцию в внутренний список функций, которые должны быть вызваны в рамках закрытия ответа. Начиная с версии 0.7, эта функция также возвращает функцию, которая была передана, чтобы это можно было использовать как декоратор.
Журнал изменений
Введено в версии 0.6.
- Параметры
-
func (Callable[[], Any]) –
- Тип возвращаемого значения
-
Callable[[], Any]
-
close() -
Закрыть обернутый ответ, если это возможно. Вы также можете использовать объект в операторе with, который автоматически закроет его.
Журнал изменений
Введено в версии 0.9: Теперь можно использовать в операторе with.
- Тип возвращаемого значения
-
content_encoding -
Поле Content-Encoding заголовка сущности используется как модификатор типа носителя. При наличии его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, а значит, какие механизмы декодирования необходимо применить для получения типа носителя, указанного в заголовке Content-Type.
-
property content_language: werkzeug.datastructures.HeaderSet -
Поле Content-Language заголовка сущности описывает естественный язык(ы) целевой аудитории для вложенной сущности. Обратите внимание, что это может не соответствовать всем языкам, используемым в теле сущности.
-
content_length -
Поле Content-Length заголовка сущности указывает размер тела сущности в десятичном числе байтов, отправленных получателю или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_location -
Поле Content-Location заголовка сущности МОЖЕТ использоваться для предоставления расположения ресурса для сущности, заключенной в сообщении, когда эта сущность доступна из расположения, отличного от URI запрашиваемого ресурса.
-
content_md5 -
Поле Content-MD5 заголовка сущности, как определено в RFC 1864, представляет собой хэш-код MD5 тела сущности для обеспечения проверки целостности сообщения от начала до конца (MIC) тела сущности. (Примечание: MIC подходит для обнаружения случайных изменений тела сущности во время передачи, но не является доказательством защиты от злонамеренных атак.)
-
property content_range: werkzeug.datastructures.ContentRange -
Заголовок
Content-Rangeкак объектContentRange. Доступен даже если заголовок не задан.Журнал изменений
Введено в версии 0.7.
-
content_security_policy -
Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для помощи в обнаружении и смягчении определенных типов атак.
-
content_security_policy_report_only -
Заголовок Content-Security-Policy-Report-Only добавляет политику CSP, которая не применяется, но сообщается, что помогает обнаружить определенные типы атак.
-
content_type -
Поле Content-Type заголовка сущности указывает тип носителя тела сущности, отправленного получателю, или, в случае метода HEAD, тип носителя, который был бы отправлен, если бы запрос был GET.
-
cross_origin_embedder_policy -
Предотвращает загрузку документа любого ресурса кросс-оригина, который не предоставляет документу разрешение. Значения должны быть членом перечисления
werkzeug.http.COEP.
-
cross_origin_opener_policy -
Позволяет контролировать совместное использование группы контекстов просмотра с документами кросс-оригина. Значения должны быть членом перечисления
werkzeug.http.COOP.
-
property data: Union[bytes, str] -
Дескриптор, который вызывает
get_data()иset_data().
-
date -
Поле Date общего заголовка представляет собой дату и время, в которые было отправлено сообщение, имеющее такие же семантические значения, как orig-date в RFC 822.
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Удалить cookie. Не выводит сообщений об ошибках, если ключ не существует.
- Параметры
-
- key (str) – ключ (имя) cookie, который нужно удалить.
- path (str) – если cookie, который нужно удалить, был ограничен путем, путь необходимо определить здесь.
- domain (Optional[str]) – если cookie, который нужно удалить, был ограничен доменом, этот домен необходимо определить здесь.
-
secure (bool) – Если
True, cookie будет доступен только через HTTPS. - httponly (bool) – запретить JavaScript-доступ к cookie.
- samesite (Optional[str]) – ограничить область действия cookie только запросами, которые являются «одной страницей».
- Тип возвращаемого значения
-
direct_passthrough -
Передать тело ответа напрямую как итерируемый объект WSGI. Это может быть использовано, когда тело представляет собой двоичный файл или другой итератор байтов, чтобы пропустить некоторые ненужные проверки. Используйте
send_file()вместо того, чтобы устанавливать это вручную.
-
expires -
Поле Expires заголовка сущности указывает дату/время, после которой ответ считается устаревшим. Запись кэша, которая устарела, обычно не возвращается кэшем.
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
-
classmethod force_type(response, environ=None) -
Принудительно устанавливает, что ответ WSGI является объектом ответа текущего типа. Werkzeug будет использовать
Responseво многих ситуациях, таких как исключения. Если вы вызываетеget_response()на исключении, вы получите обычныйResponseобъект, даже если вы используете пользовательское подклассы.Этот метод может принудительно установить заданный тип ответа, а также преобразовывать произвольные вызываемые объекты WSGI в объекты ответа, если предоставлен объект environ:
# convert a Werkzeug response object into an instance of the # MyResponseClass subclass. response = MyResponseClass.force_type(response) # convert any WSGI application into a response object response = MyResponseClass.force_type(response, environ)
Это особенно полезно, если вы хотите послеобработать ответы в основном диспетчере и использовать функциональные возможности, предоставляемые вашим подклассом.
Помните, что это может изменить объекты ответа на месте, если это возможно!
-
freeze(no_etag=None) -
Подготавливает объект ответа к сериализации с помощью pickle. Выполняет следующие действия:
- Буферизует ответ в список, игнорируя
implicity_sequence_conversionиdirect_passthrough. - Устанавливает заголовок
Content-Length. - Генерирует заголовок
ETagесли он не установлен.
Изменено в версии 2.0: Добавлен заголовок
ETag, параметрno_etagустарел и будет удален в Werkzeug 2.1.Журнал изменений
Изменено в версии 0.6: Установлен заголовок
Content-Length. - Буферизует ответ в список, игнорируя
-
classmethod from_app(app, environ, buffered=False) -
Создает новый объект ответа из выходных данных приложения. Лучше всего подходит для передачи приложения, которое всегда возвращает генератор. Иногда приложения могут использовать вызываемый объект
write(), возвращаемый функциейstart_response. Это пытается автоматически разрешить такие крайние случаи. Но если вы не получаете ожидаемый результат, вы должны установитьbufferedвTrue, что принудительно буферизует.
-
get_app_iter(environ) -
Возвращает итератор приложения для заданной среды. В зависимости от метода запроса и текущего кода состояния, возвращаемое значение может быть пустым ответом, а не ответом от ответа.
Если метод запроса
HEAD, или код состояния находится в диапазоне, где спецификация HTTP требует пустого ответа, возвращается пустая итерируемая последовательность.Журнал изменений
Добавлен в версии 0.6.
- Parameters
-
environ (WSGIEnvironment) – среда WSGI запроса.
- Returns
-
итерируемый объект ответа.
- Return type
-
Iterable[bytes]
-
get_data(as_text=False) -
Строковое представление тела ответа. При каждом вызове этого свойства итерируемый объект ответа кодируется и сглаживается. Это может привести к нежелательному поведению при передаче больших данных.
Это поведение можно отключить, установив
implicit_sequence_conversionвFalse.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Журнал изменений
Добавлен в версии 0.9.
-
get_etag() -
Возвращает кортеж в виде
(etag, is_weak). Если ETag отсутствует, возвращаемое значение(None, None).
-
get_json(force=False, silent=False) -
Парсит
dataкак JSON. Полезно во время тестирования.Если тип MIME не указывает JSON (application/json, см.
is_json()), возвращаетNone.В отличие от
Request.get_json(), результат не кэшируется.
-
get_wsgi_headers(environ) -
Вызывается автоматически перед запуском ответа и возвращает измененные заголовки для данной среды. Возвращает копию заголовков из ответа с внесенными изменениями, если необходимо.
Например, заголовок location (если он есть) объединяется с корневым URL-адресом среды. Также для определенных кодов состояния длина содержимого здесь автоматически устанавливается в ноль.
Журнал изменений
Изменено в версии 0.6: Ранее эта функция называлась
fix_headersи изменяла объект ответа на месте. Также начиная с 0.6, IRIs в заголовках location и content-location обрабатываются правильно.Также начиная с 0.6, Werkzeug будет пытаться установить длину содержимого, если сможет самостоятельно это определить. Это происходит в том случае, если все строки в итерируемом объекте ответа уже закодированы, а итерируемый объект буферизован.
- Parameters
-
environ (WSGIEnvironment) – среда WSGI запроса.
- Returns
-
возвращает новый
Headersобъект. - Return type
-
-
get_wsgi_response(environ) -
Возвращает окончательный ответ WSGI в виде кортежа. Первый элемент кортежа — итератор приложения, второй — код состояния, а третий — список заголовков. Возвращаемый ответ создается специально для заданной среды. Например, если метод запроса в среде WSGI равен
'HEAD', ответ будет пустым, и будут присутствовать только заголовки и код состояния.Changelog
Добавлена в версии 0.6.
-
implicit_sequence_conversion = True -
если установлено значение
False, доступ к свойствам объекта ответа не будет пытаться извлечь итератор ответа и преобразовать его в список.Changelog
Добавлена в версии 0.6.2: Это свойство ранее называлось
implicit_seqence_conversion. (Обратите внимание на ошибку в написании). Если вы использовали эту функцию, вам необходимо адаптировать свой код к изменению названия.
-
property is_json: bool -
Проверка, указывает ли MIME-тип на данные JSON, либо application/json, либо application/*+json.
-
property is_sequence: bool -
Если итератор буферизован, это свойство будет
True. Объект ответа будет считать итератор буферизованным, если атрибут ответа является списком или кортежем.Changelog
Добавлена в версии 0.6.
-
property is_streamed: bool -
Если ответ передаётся потоками (ответ не является итерируемым объектом с информацией о длине), это свойство равно
True. В этом случае потоковая передача означает, что нет информации о количестве итераций. Это обычноTrueесли в объект ответа передаётся генератор.Это полезно для проверки перед применением некоторого вида постфильтрации, которая не должна выполняться для потоковых ответов.
-
iter_encoded() -
Итерация по закодированному ответу с кодировкой ответа. Если объект ответа вызывается как WSGI-приложение, возвращаемое значение этого метода используется в качестве итератора приложения, если
direct_passthroughне был активирован.- Тип возвращаемого значения
-
Iterator[байты]
-
property json: Optional[Any] -
Парсированные данные JSON, если
mimetypeуказывает на JSON (application/json, см.is_json()).Вызывает
get_json()с аргументами по умолчанию.
-
json_module = <module 'json' from '/home/docs/.pyenv/versions/3.7.9/lib/python3.7/json/__init__.py'> -
Модуль или другой объект, содержащий функции
dumpsиloads, соответствующие API встроенного модуляjson.
-
last_modified -
Поле заголовка сущности Last-Modified указывает дату и время, когда исходный сервер считает, что вариант был в последний раз изменён.
Изменено в версии 2.0: Объект datetime имеет информацию о часовом поясе.
-
location -
Поле заголовка ответа Location используется для перенаправления получателя в другое местоположение, отличное от Request-URI, для завершения запроса или идентификации нового ресурса.
-
make_conditional(request_or_environ, accept_ranges=False, complete_length=None) -
Делает ответ условным для запроса. Этот метод лучше всего работает, если для ответа уже определён etag. Метод
add_etagможет быть использован для этого. Если вызывается без etag, устанавливается только заголовок даты.Не выполняет никаких действий, если метод запроса в запросе или среде отличается от GET или HEAD.
Для оптимальной производительности при обработке запросов диапазона рекомендуется, чтобы ваш объект данных ответа реализовывал методы
seekable,seekиtell, как описано вio.IOBase. Объекты, возвращаемыеwrap_file(), автоматически реализуют эти методы.Не удаляет тело ответа, потому что это делает за нас функция
__call__().Возвращает self, так что вы можете выполнить
return resp.make_conditional(req), но изменяет объект на месте.- Параметры
-
- request_or_environ (WSGIEnvironment) — объект запроса или WSGI-среда, используемые для условного определения ответа.
-
accept_ranges (Union[bool, строка]) — этот параметр определяет значение заголовка
Accept-Ranges. ЕслиFalse(значение по умолчанию), заголовок не устанавливается. ЕслиTrue, он будет установлен в значение"bytes". ЕслиNone, он будет установлен в значение"none". Если это строка, она используется как значение. -
complete_length (Optional[целое число]) — используется только в допустимых запросах диапазона. Он установит значение полной длины
Content-Rangeи вычислит фактическое значениеContent-Length. Этот параметр обязателен для успешного завершения запросов диапазона.
- Исключения
-
RequestedRangeNotSatisfiable, если заголовокRangeне удалось разобрать или удовлетворить. - Тип возвращаемого значения
Изменено в версии 2.0: Обработка диапазона пропускается, если длина равна 0, вместо того, чтобы выводить ошибку 416 Range Not Satisfiable.
-
make_sequence() -
Преобразует итератор ответа в список. По умолчанию это происходит автоматически, если необходимо. Если
implicit_sequence_conversionотключено, этот метод не вызывается автоматически, и некоторые свойства могут вызывать исключения. Это также кодирует все элементы.Changelog
Добавлена в версии 0.6.
- Тип возвращаемого значения
-
property mimetype: Optional[str] -
MIME-тип (тип содержимого без кодировки и т. д.).
-
property mimetype_params: Dict[str, str] -
Параметры MIME-типа в виде словаря. Например, если тип содержимого равен
text/html; charset=utf-8, параметры будут{'charset': 'utf-8'}.Changelog
Добавлена в версии 0.5.
-
-
response: Union[Iterable[str], Iterable[bytes]] -
Тело ответа для отправки в качестве итерируемого объекта WSGI. Список строк или байтов представляет собой ответ фиксированной длины, любой другой итерируемый объект — ответ в потоковом режиме. Строки кодируются в байты в формате UTF-8.
Не устанавливайте обычную строку или байты, это приведет к очень неэффективному отправлению ответа, так как он будет итерироваться по одному байту за раз.
-
property retry_after: Optional[datetime.datetime] -
Поле заголовка ответа Retry-After может использоваться с ответом 503 (Сервис недоступен) для указания, как долго сервис, по прогнозу, будет недоступен для клиента, отправляющего запрос.
Время в секундах до истечения срока действия или дата.
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Устанавливает cookie.
Выдается предупреждение, если размер заголовка cookie превышает
max_cookie_size, но заголовок все равно будет установлен.- Параметры
-
- key (str) – ключ (имя) cookie для установки.
- value (str) – значение cookie.
-
max_age (Optional[Union[datetime.timedelta, int]]) – должно быть числом секунд, или
None(по умолчанию), если cookie должно действовать только в течение сессии браузера клиента. -
expires (Optional[Union[str, datetime.datetime, int, float]]) – должно быть объектом
datetime, или меткой времени Unix. - path (Optional[str]) – ограничивает cookie заданным путём, по умолчанию он будет охватывать весь домен.
-
domain (Optional[str]) – если вы хотите установить cookie для другого домена. Например,
domain=".example.com"установит cookie, доступный для доменаwww.example.com,foo.example.comи т. д. В противном случае cookie будет доступен только для домена, который его установил. -
secure (bool) – Если
True, cookie будет доступен только через HTTPS. - httponly (bool) – Запретить доступ к cookie из JavaScript.
- samesite (Optional[str]) – Ограничить область действия cookie только запросами, которые являются «same-site».
- Тип возвращаемого значения
-
set_data(value) -
Устанавливает новую строку в качестве ответа. Значение должно быть строкой или байтами. Если установлена строка, она кодируется в соответствии с кодировкой ответа (по умолчанию utf-8).
Журнал изменений
Добавлена в версии 0.9.
-
set_etag(etag, weak=False) -
Установить etag и переопределить старое значение, если оно существовало.
-
property status: str -
Код HTTP-статуса в виде строки.
-
property status_code: int -
Код HTTP-статуса в виде числа.
-
property stream: werkzeug.wrappers.response.ResponseStream -
Итерируемый объект ответа как поток только для записи.
-
property vary: werkzeug.datastructures.HeaderSet -
Значение поля Vary указывает набор полей заголовка запроса, которые полностью определяют, пока ответ остается актуальным, разрешено ли кэшу использовать ответ для ответа на последующий запрос без повторной проверки.
-
property www_authenticate: werkzeug.datastructures.WWWAuthenticate -
Заголовок
WWW-Authenticateв обработанном виде.
-
© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/2.0.x/wrappers/