import flask flask.Request(environ, populate_request=True, shallow=False)
environ
- среда, созданная сервером WSGI и содержит информацию о конфигурации сервера и запросе клиента.populate_request=True
- добавляет 'werkzeug.request'
в среду WSGI (environ['werkzeug.request']
). Полезно при отладке.shallow=False
- заставляет вызвать RuntimeError
при чтение из потока (и любого метода, который будет читать из него). Полезно для предотвращения использования данных формы в промежуточном программном обеспечении, которое сделало бы его недоступным для конечного приложения.Request
.Класс Request()
модуля flask
создает объект запроса при каждом обращении к URL приложения, который, в свою очередь, запоминает совпадающую конечную точку endpoint
и аргументы, передаваемые в функцию-представление.
Класс flask.Request
является подклассом werkzeug.wrappers.Request
и предоставляет все атрибуты, определенные Werkzeug, плюс несколько специфичных для Flask.
Для доступа к данным входящих запросов необходимо использовать глобальный объект запроса flask.request
. Этот объект Flask анализирует данные входящих запросов и предоставляет доступ к ним. Фреймворк Flask гарантирует, что при нахождении в многопоточной среде, для активного потока, всегда поступают правильные данные.
Request
приложения Flask.Объект запроса Request
- это то, что заканчивается запросом к сайту по определенному URL-адресу. Если необходимо заменить объект запроса, используемый по умолчанию, то можно создать его подкласс и установить app.request_class
для созданного подкласса.
Внимание!!! Объект запроса Request
, в приложении Flask доступен в качестве глобального прокси-объекта flask.request
. Например:
# импортируем прокси-объект `flask.request` from flask import request @app.route('/login', methods=['POST', 'GET']) def login(): error = None # `request.method`: доступ к HTTP-методу if request.method == 'POST': # `request.form`: доступ к полям, # передаваемым в HTML-форме. if valid_login(request.form.get('username'), request.form.get('password')): # если условие if выполнилось успешно, то 'username' # существует и дальше к нему можно обращаться как # к ключу словаря, что на много быстрее. return log_the_user_in(request.form['username']) else: error = 'Неверное имя пользователя или пароль' return render_template('login.html', error=error)
Дополнительно смотрите материал "Извлечение различных данных из запроса в приложении на Flask".
Request
.Request.accept_charsets
наборов символов, которые поддерживает клиент,Request.accept_encodings
список кодировок клиента,Request.accept_languages
список языков клиента,Request.accept_mimetypes
список типов mimetypes
клиента,Request.access_control_request_headers
заголовки, отправленные с перекрестным запросом,Request.access_control_request_method
HTTP-метод, отправленный с перекрестным запросом,Request.access_route
список всех ip-адресов заголовка 'FORWARDED'
,Request.application()
декоратор для функции WSGI,Request.args
словарь с параметрами URL-адреса,Request.authorization
возвращает объект werkzeug.datastructures.Authorization
,Request.base_url
как Request.url
, но без строки запроса,Request.blueprint
имя текущей схемы blueprint
,Request.blueprints
имена текущей схемы blueprint
,Request.cache_control
объект werkzeug.datastructures.RequestCacheControl
,Request.close()
закрывает связанные ресурсы запроса,Request.content_encoding
поле заголовка Content-Encoding
,Request.content_length
поле заголовка Content-Length
,Request.content_md5
поля заголовка Content-MD5
,Request.content_type
поле заголовка Content-Type
,Request.cookies
словарь всех файлов cookie
,Request.data
входящий запрос в виде строки,Request.date
данные общего заголовка Date
,Request.dict_storage_class
ссылка на werkzeug.datastructures.ImmutableMultiDict
,Request.endpoint
конечная точка, соответствующая URL-адресу запроса,Request.environ
возвращает словарь переменных среды WSGI сервера,Request.files
возвращает MultiDict
, содержащий все загруженные файлы,Request.form
возвращает данные HTML-формы,Request.form_data_parser_class
ссылка на werkzeug.formparser.FormDataParser
,Request.from_values()
создает новый объект запроса Request
,Request.full_path
URL путь, включая строку запроса,Request.get_data()
читает входящие данные от клиента в однобайтовый объект,Request.get_json()
возвращает распарсенные данные JSON,Request.headers
словарь с заголовками, переданными в запросе,Request.host
возвращает имя хоста,Request.host_url
возвращает только схему URL-адреса и хост,Request.if_match
возвращает распарсенный заголовок If-Match
,Request.if_modified_since
возвращает распарсенный заголовок If-Modified-Since
,Request.if_none_match
возвращает распарсенный заголовок If-None-Match
,Request.if_range
возвращает распарсенный заголовок If-Range
,Request.if_unmodified_since
возвращает распарсенный заголовок If-Unmodified-Since
,Request.input_stream
возвращает входной поток WSGI,Request.is_json
проверяет присутствие типа application/json
,Request.is_multiprocess
True
, если WSGI порождает несколько процессов,Request.is_multithread
True
, если приложение обслуживает многопоточный WSGI,Request.is_run_once
True
, если приложение выполняться один раз за время процесса,Request.is_secure
True
, если запрос был сделан через HTTPS
,Request.json
возвращает данные JSON,Request.list_storage_class
ссылка на werkzeug.datastructures.ImmutableList
,Request.make_form_data_parser()
создает анализатор данных HTML-формы,Request.max_content_length
параметр конфигурации MAX_CONTENT_LENGTH
,Request.max_forwards
возвращает заголовок запроса Max-Forwards
,Request.method
возвращает HTTP-метод запроса,Request.mimetype
как Request.content_type
, но без параметров,Request.mimetype_params
возвращает параметры mimetype
как словарь,Request.on_json_loading_failed()
вызывается, если анализ JSON завершается неудачно,Request.origin
возвращает хост, с которого исходил запрос,Request.parameter_storage_class
ссылка на werkzeug.datastructures.ImmutableMultiDict
,Request.path
возвращает часть пути URL-адреса после Request.root_path
,Request.pragma
возвращает данные общего заголовка Pragma
,Request.query_string
возвращает часть URL-адреса после знака вопроса,Request.range
возвращает значение заголовка Range
,Request.referrer
возвращает значение заголовка Referer[sic]
,Request.remote_addr
возвращает ip-адрес клиента,Request.remote_user
имя аутентифицированного пользователя,Request.root_path
возвращает префикс, под которым монтируется приложение,Request.root_url
возвращает схему URL-адреса, хост и корневой путь,Request.routing_exception
возвращает исключение, если не удалось сопоставить URL,Request.scheme
возвращает протокол URL-адреса,Request.script_root
псевдоним для self.root_path
,Request.server
возвращает адрес сервера (host, port)
,Request.shallow
если True
, то чтение из тела запроса вызовет исключение RuntimeException
,Request.stream
данные потока Request.stream
без изменений,Request.url
возвращает полный URL-адрес запроса,Request.url_charset
возвращает кодировку, используемую для URL,Request.url_root
ссылка на Request.root_url
,Request.url_rule
возвращает правило внутреннего URL-адреса,Request.user_agent
возвращает объект с информацией о пользовательском агенте,Request.user_agent_class
ссылка на werkzeug.useragents._UserAgent
,Request.values
возвращает словарь, который объединяет Request.args
и Request.form
,Request.view_args
словарь аргументов, переданных в функцию-представление,Request.want_form_data_parsed
True
, если метод запроса имеет контент.Request.accept_charsets
:Свойство Request.accept_charsets
представляет собой подкласс списка для списков кортежей наборов символов (value, quality)
, которые этот клиент поддерживает. Представлен в качестве объекта werkzeug.datastructures.CharsetAccept
.
Подкласс списка автоматически сортируется по специфике и качеству quality
.
>>> a = CharsetAccept([('ISO-8859-1', 1), ('utf-8', 0.7)]) >>> a.best # 'ISO-8859-1' >>> 'iso-8859-1' in a # True >>> 'UTF8' in a # True >>> 'utf7' in a # False >>> a['utf-8'] # 0.7 >>> a['utf7'] # 0 # преобразует в строку HTTP-заголовка. a.to_header()
Request.accept_encodings
:Свойство Request.accept_encodings
представляет собой подкласс списка для списков кортежей кодировок (value, quality)
, которые принимает этот клиент. Кодировки в термине HTTP - это кодировки сжатия, такие как gzip
.
Свойство Request.accept_encodings
ведет себя как Request.accept_charsets
Request.accept_languages
:Свойство Request.accept_languages
представляет собой подкласс списка для списков кортежей языков, которые этот клиент принимает в качестве объекта werkzeug.datastructures.LanguageAccept
.
Свойство Request.accept_languages
ведет себя как Request.accept_charsets
Request.accept_mimetypes
:Свойство Request.accept_mimetypes
представляет собой подкласс списка для списков кортежей типов mimetypes
, поддерживаемых этим клиентом в качестве объекта werkzeug.datastructures.MIMEAccept
.
Свойство Request.accept_mimetypes
ведет себя как Request.accept_charsets
Request.access_control_request_headers
:Атрибут Request.access_control_request_headers
отправляет запрос предварительной проверки, для выяснения, какие заголовки будут отправлены с запросом перекрестного происхождения.
Чтобы указать, какие заголовки разрешены необходимо установить в ответ Response.access_control_allow_headers
.
Request.access_control_request_method
:Атрибут Request.access_control_request_method
отправляет запрос предварительной проверки, для выяснения, какой метод будет использоваться для запроса перекрестного происхождения.
Чтобы указать, какие методы разрешены необходимо установить в ответ Response.access_control_allow_methods
.
Request.access_route
:Свойство Request.access_route
представляет собой список всех ip-адресов от ip-адреса клиента до последнего прокси-сервера, если существует заголовок 'FORWARDED'
.
Request.application(f)
:Метод класса Request.application()
используется как декоратор для функции WSGI, которая принимает запрос в качестве последнего аргумента. Это работает как декоратор responder()
, но функция передает объект запроса в качестве последнего аргумента, и объект запроса будет автоматически закрыт:
@Request.application def my_wsgi_app(request): return Response('Hello World!')
Возвращает WSGIApplication
. Начиная с Werkzeug 0.14 Исключения HTTP автоматически перехватываются и преобразуются в ответы вместо сбоя.
Request.args
:Свойство Request.args
возвращает неизменяемый словарь с параметрами проанализированного URL-адреса (часть в URL - адресе после знака вопроса).
По умолчанию из этой функции возвращается значение ImmutableMultiDict
(неизменяемый словарь). Возвращаемый тип можно изменить, установив для параметра Request.parameter_storage_class
другой тип. Изменение типа может потребоваться, если важен порядок данных формы.
Возвращаемый словарь ImmutableMultiDict
имеет метод .get()
, который отличается от dict.get()
одним принимаемым аргументом. Вызвать этот метод можно следующим образом:
request.args.get(key, default=None, type=None)
Подробнее в материале "Извлечение различных данных из запроса в приложении на Flask".
Request.authorization
:Свойство Request.authorization
представляет заголовок авторизации, отправленный клиентом, в виде объекта werkzeug.datastructures.Authorization
в распарсенном виде.
Request.base_url
:Свойство Request.base_url
ведет себя как Request.url
, но без строки запроса.
Request.blueprint
:Свойство Request.blueprint
возвращает зарегистрированное имя текущей схемы blueprint
.
Request.blueprint
не возвратит значение, если конечная точка не является частью схемы blueprint
, или если сопоставление URL-адресов не удалось или еще не было выполнено.
Возвращаемое значение не обязательно совпадает с именем, с которым была создана схема. Возможно, она была вложена или зарегистрирована под другим именем.
Request.blueprints
:Свойство Request.blueprints
возвращает зарегистрированные имена текущей схемы blueprint
вверх к родительским схемам.
Это будет пустой список []
, если нет текущей схемы или если не удалось сопоставить URL-адрес.
Новое в версии 2.0.1.
Request.cache_control
:Свойство Request.cache_control
представляет объект werkzeug.datastructures.RequestCacheControl
, является неизменяемым и предоставляет доступ ко всем заголовкам управления кэшем, относящимся к запросу.
Для получения строкового представления заголовка запроса Cache-Control
, нужно преобразовать объект RequestCacheControl
в строку функцией str()
или вызвать метод RequestCacheControl.to_header()
. Если необходимо его подклассировать и добавить свои собственные элементы, то смотрите исходный код для этого класса.
Request.close()
:Метод Request.close()
закрывает связанные ресурсы этого объекта запроса. Метод явно закрывает все дескрипторы файлов.
Также можно использовать объект запроса в инструкции with
, которая автоматически закроет его.
Request.content_encoding
:Атрибут Request.content_encoding
представляет собой поле заголовка Content-Encoding
, используется как модификатор типа медиа.
Если он присутствует, то его значение указывает, какие дополнительные кодировки контента были применены к телу объекта и, следовательно, какие механизмы декодирования должны быть применены для получения типа медиа, на который ссылается поле заголовка Content-Type
.
Request.content_length
:Свойство Request.content_length
представляет собой поле заголовка Content-Length
, указывает размер тела объекта в байтах или, в случае метода HEAD
, размер тела объекта, которое было бы отправлено, если бы использовался запрос GET
.
Request.content_md5
:Атрибут Request.content_md5
данные поля заголовка Content-MD5
, как определено в RFC 1864, представляет собой дайджест MD5 тела объекта с целью обеспечения сквозной проверки целостности сообщения (MIC) тела объекта.
Примечание: MIC хорош для обнаружения случайной модификации тела объекта при передаче, но не является защитой от злонамеренных атак.
Request.content_type
:Атрибут Request.content_type
представляет собой поле заголовка Content-Type
, указывает тип носителя тела объекта, отправленного получателю, или, в случае метода HEAD
, тип носителя, который был бы отправлен, если бы использовался запрос GET
.
Request.cookies
:Свойство Request.cookies
представляет собой словарь с содержанием всех файлов cookie
, переданных вместе с запросом.
Request.data: bytes
:Свойство Request.data
содержит данные входящего запроса в виде строки на случай, если он пришел с типом mimetype
, который Werkzeug
не обрабатывает.
Request.date
:Атрибут Request.date
это данные поля общего заголовка Date
, представляет дату и время, когда было отправлено сообщение, и имеет ту же семантику, что и исходная дата в RFC 822.
Изменено в версии 2.0: объект datetime.datetime
учитывает часовой пояс.
Request.dict_storage_class
:Атрибут Request.dict_storage_class
ссылка на werkzeug.datastructures.ImmutableMultiDict
.
Request.endpoint
:Свойство Request.endpoint
представляет собой конечную точку, соответствующую URL-адресу запроса.
Это свойство будет возвращать None
, если сопоставление URL-адреса не удалось или еще не было выполнено.
Request.endpoint
в сочетании с Request.view_args
может использоваться для восстановления того же URL-адреса или измененного URL-адреса.
Request.environ
:Атрибут Request.environ
возвращает словарь переменных среды WSGI сервера, которые содержат HTTP-заголовки и информацию с сервера WSGI.
Подробнее в материале "Извлечение различных данных из запроса в приложении на Flask".
Request.files
:Свойство Request.files
возвращает объект MultiDict
, содержащий все загруженные файлы. Каждый ключ в Request.files
- это имя name
из <input type="file" name="">
, а каждое значение, является объектом FileStorage
модуля Werkzeug.
Он ведет себя как стандартный файловый объект, с той лишь разницей, что он также имеет метод .save()
, которая может сохранять файл в файловой системе.
Обратите внимание, что файлы будут содержать данные только в том случае, если метод запроса был POST
, PUT
или PATCH
, а HTML-форма, отправленная в запросе, имела тип enctype="multipart/form-data"
, в противном случае Request.files
будет пустым.
Подробнее в материале "Загрузка файлов на сервер в приложении Flask".
Request.form
:Свойство Request.form
возвращает данные полей переданной HTML-формы в виде атрибутов. По умолчанию это свойство возвращает ImmutableMultiDict
.
Возвращаемый тип можно изменить, задав для параметра Request.parameter_storage_class
другой тип. Изменение типа может быть необходимо, если важен порядок возвращаемых данных в форме.
Подробнее в материале "Извлечение различных данных из запроса в приложении на Flask".
Имейте в виду, что данные загрузки файлов возвращаются не здесь, а в атрибуте Request.files
.
Request.form_data_parser_class
:Атрибут Request.form_data_parser_class
представляет собой ссылку на werkzeug.formparser.FormDataParser
.
Request.from_values(*args, **kwargs)
:Метод класса Request.from_values()
создает новый объект запроса Request
на основе предоставленных значений. Если задана среда environ
, то пропущенные значения заполняются оттуда.
Этот метод полезен для небольших скриптов, когда нужно имитировать запрос с URL-адреса. Не используйте этот метод для модульного тестирования, существует полнофункциональный клиентский объект (Client
), который позволяет создавать составные запросы, поддерживает файлы cookie и т. д.
Метод класса Request.from_values()
принимает те же параметры, что и werkzeug.test.EnvironBuilder
.
Request.full_path
:Свойство Request.full_path
представляет собой запрошенный URL путь, включая строку запроса..
Request.get_data(cache=True, as_text=False, parse_form_data=False)
:Метод Request.get_data()
считывает буферизованные входящие данные от клиента в однобайтовый объект. По умолчанию, входящие данные кэшируется, но это поведение можно изменить, установив для аргумента cache
значение False
.
Обычно вызывать этот метод без предварительной проверки длины содержимого - плохая идея, поскольку клиент может отправить десятки мегабайт или более, чтобы вызвать проблемы с памятью на сервере.
Обратите внимание, что если данные формы уже были проанализированы, то этот метод ничего не вернет, так как синтаксический анализ данных формы не кэшируется, как этот метод. Чтобы неявно вызывать функцию синтаксического анализа данных формы, необходимо установить у аргумента parse_form_data
значение True
. Когда это будет сделано и если синтаксический анализатор формы обрабатывает данные, то возвращаемое значение этого метода будет пустой строкой. Как правило, в этом нет необходимости, поскольку если все данные кэшируются (по умолчанию), синтаксический анализатор формы будет использовать кэшированные данные для анализа данных формы. В любом случае, прежде чем вызывать этот метод, всегда помните о проверке длины содержимого, чтобы избежать падения приложения из за нехватки памяти сервера.
Если аргумент as_text
установлен в True
, то возвращаемое значение будет декодированной строкой.
Request.get_json(force=False, silent=False, cache=True)
:Метод Request.get_json()
возвращает распарсенные/разобранные данные JSON.
Если тип mimetype
не указывает на JSON (application/json
, смотрите Request.is_json()
), то этот метод возвращает значение None
.
Если синтаксический анализ завершается неудачно, то вызывается Request.on_json_loading_failed()
, и его значение используется в качестве возвращаемого значения.
Принимаемые аргументы:
force
: Игнорирует тип mimetype
и всегда пытайтесь анализировать JSON.silent
: Отключает возникновение ошибок при синтаксическом анализе, а в случае их возникновения не возвращает никаких данных.cache
(bool) – Кэширует проанализированный JSON для последующих вызовов.Request.headers
:Атрибут Request.headers
представляет собой словарь с заголовками, полученные вместе с запросом.
Request.host
:Свойство Request.host
возвращает имя хоста, к которому был отправлен запрос, включая порт, если он нестандартный. Проверено с помощью trust_hosts
.
Request.host_url
:Свойство Request.host_url
возвращает только схему URL-адреса и хост.
Request.if_match
:Свойство Request.if_match
возвращает объект werkzeug.datastructures.ETags
, содержащий все теги в заголовке If-Match
. Свойство можно использовать для проверки наличия одного etag
в коллекции etag
.
Request.if_modified_since
:Свойство Request.if_modified_since
возвращает распарсенный заголовок If-Modified-Since
как объект datetime.datetime
.
Изменено в версии 2.0: объект datetime.datetime
учитывает часовой пояс.
Request.if_none_match
:Свойство Request.if_none_match
возвращает объект werkzeug.datastructures.ETags
, содержащий все теги в заголовке If-None-Match
.
Request.if_range
:Свойство Request.if_range
возвращает распарсенный/разобранный заголовок If-Range
как объект werkzeug.datastructures.IfRange
. У него либо не будет ни метки, ни даты, либо будет присутствовать одно из них, но никогда не будет присутствовать и то, и другое вместе.
Имеет атрибуты IfRange.date
, IfRange.etag
и метод строкового представления заголовка IfRange.to_header()
.
Изменено в версии 2.0: werkzeug.datastructures.IfRange.date
учитывает часовой пояс.
Request.if_unmodified_since
:Свойство Request.if_unmodified_since
возвращает распарсенный заголовок If-Unmodified-Since
как объект datetime.datetime
.
Изменено в версии 2.0: объект datetime.datetime
учитывает часовой пояс.
Request.input_stream
:Атрибут Request.input_stream
возвращает входной поток WSGI.
Использовать атрибут Request.input_stream
- плохая идея, т.к. при чтении можно легко выйти за границы. Вместо этого используйте Request.stream
.
Request.is_json
:Свойство Request.is_json
проверяет, что тип mimetype
указывает на данные JSON: application/json
или `application/*+json.
Request.is_multiprocess
:Атрибут Request.is_multiprocess
логическое значение, которое верно, если приложение обслуживается WSGI сервером, если он порождает несколько процессов.
Request.is_multithread
:Атрибут Request.is_multithread
логическое значение, которое верно, если приложение обслуживается многопоточным WSGI сервером.
Request.is_run_once
:Атрибут Request.is_run_once
логическое значение, которое верно, если приложение будет выполняться только один раз за время существования процесса.
Такое поведение относится, например, к CGI, но не гарантируется, что выполнение произойдет только один раз..
Request.is_secure: bool
:Свойство Request.is_secure
возвращает True
, если запрос был сделан с использованием защищенного протокола (HTTPS
или WSS
).
Request.json
:Свойство Request.json
возвращает проанализированные данные JSON, если mimetype
указывает на JSON (application/json
, смотрите Request.is_json
).
Вызывает метод Request.get_json()
с аргументами по умолчанию.
Request.list_storage_class
:Атрибут Request.list_storage_class
представляет собой ссылку на werkzeug.datastructures.ImmutableList
.
Request.make_form_data_parser()
:Метод Request.make_form_data_parser()
создает анализатор данных HTML-формы в виде экземпляра класса Request.form_data_parser_class
с некоторыми параметрами.
Возвращает тип werkzeug.formparser.FormDataParser
.
Request.max_content_length
:Свойство Request.max_content_length
доступно только для чтения, представляет доступ к параметру конфигурации MAX_CONTENT_LENGTH
.
Request.max_forwards
:Атрибут Request.max_forwards
возвращает поле заголовка запроса Max-Forwards
, который предоставляет механизм с методами TRACE
и OPTIONS
для ограничения количества прокси или шлюзов, которые могут пересылать запрос на следующий входящий сервер.
Request.method
:Атрибут Request.method
возвращает HTTP-метод, с помощью которого был сделан запрос, например GET
.
Request.mimetype
:Свойство Request.mimetype
ведет себя как Request.content_type
, но без параметров (например, без кодировки, типа и т.д.) и всегда возвращает значение в нижнем регистре.
Например, если тип содержимого text/HTML; charset=utf-8
, то Request.mimetype
будет 'текст/html'
.
Request.mimetype_params
:Свойство Request.mimetype_params
возвращает параметры mimetype
как словарь dict
.
Например, если тип содержимого text/HTML; charset=utf-8
, то Request.mimetype_params
возвратит: {'charset': 'utf-8'}
.
Request.on_json_loading_failed(e)
:Метод Request.on_json_loading_failed()
вызывается, если синтаксический анализ Request.get_json()
завершается неудачно и не отключается. Если этот метод возвращает значение, которое используется как возвращаемое значение для .get_json()
.
Реализация по умолчанию вызывает BadRequest
.
Request.origin
:Атрибут Request.origin
возвращает хост, с которого исходил запрос.
Для указания разрешенных источников запроса необходимо установить в ответ сервера Response.access_control_allow_origin
разрешенные источники.
Request.parameter_storage_class
:Атрибут Request.parameter_storage_class
представляет собой ссылку на werkzeug.datastructures.ImmutableMultiDict
.
Request.path
:Атрибут Request.path
возвращает часть пути URL-адреса после Request.root_path
. Это путь, используемый для маршрутизации в приложении.
Request.pragma
:Свойство Request.pragma
это данные поля общего заголовка Pragma
, используется для включения директив, зависящих от реализации, которые могут применяться к любому получателю в цепочке запрос/ответ. Все директивы pragma
определяют необязательное поведение с точки зрения протокола; однако некоторые системы МОГУТ требовать, чтобы поведение соответствовало директивам.
Возвращает тип werkzeug.datastructures.HeaderSet
. Ведет себя подобно множеству set
Python:
>>> resp.pragma(['foo', 'bar']) # добавит значение заголовка >>> resp.pragma.add('baz']) >>> resp.pragma # HeaderSet(['foo', 'bar', 'baz']) # удалит значение заголовка >>> resp.pragma.discard('foo') # преобразует в строку HTTP-заголовка. >>> resp.pragma.to_header() # очистит заголовок. >>> resp.pragma.clear()
Request.query_string
:Атрибут Request.query_string
возвращает часть URL-адреса после знака вопроса '?'
. Это исходная строка параметров запроса, используйте Request.args
для извлечения проанализированных значений.
Request.range
:Свойство Request.range
возвращает проанализированное значение заголовка Range
в виде объекта werkzeug.datastructures.Range
. Все методы поддерживают только bytes
в качестве единицы измерения. Сохраняет список диапазонов, если он задан, но методы работают только в том случае, если указан только один диапазон.
Request.referrer
:Атрибут Request.referrer
возвращает данные поля заголовка запроса Referer[sic]
, позволяет клиенту указать адрес (URI) ресурса, из которого был получен запрос ('referrer'
, хотя поле заголовка написано с ошибкой).
Request.remote_addr
:Атрибут Request.remote_addr
возвращает ip-адрес клиента, отправляющего запрос.
Request.remote_user
:Атрибут Request.remote_user
содержит имя пользователя, под которым пользователь прошел аутентификацию, если сервер поддерживает аутентификацию пользователя и сценарий защищен.
Request.root_path
:Атрибут Request.root_path
возвращает префикс, под которым монтируется приложение, без завершающей косой черты. после этого значения начинается Request.path
.
Request.root_url
:Свойство Request.root_url
возвращает схему URL-адреса, хост и корневой путь. Это корень, из которого осуществляется доступ к приложению.
Request.routing_exception
:Атрибут Request.routing_exception
возвращает исключение, которое будет вызвано или было вызвано как часть обработки запроса, если сопоставление URL-адреса не удалось. Обычно это исключение NotFound
или что-то подобное.
Request.scheme
:Атрибут Request.scheme
возвращает протокол URL-адреса, используемого запросом, например https
или wss
.
Request.script_root
:Свойство Request.script_root
представляет собой псевдоним для self.root_path
. Environment ['SCRIPT_ROOT']
без косой черты в конце.
Request.server
:Атрибут Request.server
возвращает адрес сервера. Для unix-сокетов (host, port), (path, None)
или None
, если неизвестно.
Request.shallow
:Атрибут Request.shallow
устанавливается при создании объекта запроса. Если True
, то чтение из тела запроса вызовет исключение RuntimeException
. Полезно для предотвращения изменения потока промежуточным программным обеспечением.
Request.stream
:Если входящие данные формы не были закодированы с использованием известного типа mime
, то данные сохраняются в потоке Request.stream
без изменений и имеет тип байтовой строки bytes
. В большинстве случаев лучше использовать данные в виде строки Request.data
.
Поток Request.stream
возвращает данные только один раз.
В отличие от Request.input_stream
, этот поток должным образом защищен от случайного чтения большей длины. Werkzeug
всегда будет внутренне обращаться к этому потоку для чтения данных, что позволяет обернуть этот объект потоком, выполняющим фильтрацию.
Request.url
:Свойство Request.url
возвращает полный URL-адрес запроса со схемой, хостом, корневым путем, путем и строкой запроса.
Подробнее в материале "Извлечение различных данных из запроса в приложении на Flask".
Request.url_charset
:Свойство Request.url_charset
возвращает кодировку, используемую для URL-адресов.
Request.url_root
:Свойство Request.url_root
представляет собой ссылку на Request.root_url
, URL-адрес со схемой, хостом и корневым путем. Например, https://example.com/app/
.
Request.url_rule
:Атрибут Request.url_rule
возвращает правило внутреннего URL-адреса, соответствующее запросу.
Атрибут может быть полезен для проверки того, какие методы разрешены для URL-адреса из обработчика до/после (request.url_rule.methods
) и т. д. Хотя, если HTTP-метод запроса был недопустимым для правила URL-адреса, то действительный список доступен в routing_exception.valid_methods
(атрибут исключения Werkzeug MethodNotAllowed
), потому что запрос никогда не был внутренне привязан.
Request.user_agent
:Свойство Request.user_agent
возвращает объект с информацией о пользовательском агенте. Чтобы получить значение заголовка необходимо использовать Request.user_agent.string
.
Чтобы обеспечить синтаксический анализ свойств пользовательского агента, нужно создать подкласс werkzeug.user_agent.UserAgent
, который будет анализировать строку Request.user_agent.string
и установить его в Request.user_agent_class
.
Изменено в версии 2.0: встроенный синтаксический анализатор устарел и будет удален в Werkzeug 2.1. Подкласс UserAgent
должен быть настроен на анализ данных из строки Request.user_agent.string
.
Request.user_agent_class
:Атрибут Request.user_agent_class
представляет собой ссылку на werkzeug.useragents._UserAgent
.
Request.values
:Свойство Request.values
возвращает словарь, который сочетает/объединяет в себе данные Request.args
и Request.form
.
Для GET-запросов в Request.values
присутствуют только данные из Request.args
.
Изменено в версии 2.0: Для запросов GET присутствуют только Request.args
.
Request.view_args
:Атрибут Request.view_args
словарь аргументов функции-представления, соответствующих запросу. Если при сопоставлении произошло исключение, то возвращаемое значение будет None
.
Request.want_form_data_parsed: bool
:Свойство Request.want_form_data_parsed
возвращает True
, если метод запроса имеет контент.
Если отправляется заголовок Content-Type
, то по умолчанию возвращается True
.