class documentation

class Request(_SansIORequest):

Known subclasses: werkzeug.wrappers.base_request.BaseRequest, werkzeug.wrappers.request.PlainRequest

View In Hierarchy

Represents an incoming WSGI HTTP request, with headers and body taken from the WSGI environment. Has properties and methods for using the functionality defined by various HTTP specs. The data in requests object is read-only.

Text data is assumed to use UTF-8 encoding, which should be true for the vast majority of modern clients. Using an encoding set by the client is unsafe in Python due to extra encodings it provides, such as zip. To change the assumed encoding, subclass and replace charset.

Changed in version 2.0: Combine BaseRequest and mixins into a single Request class. Using the old classes is deprecated and will be removed in Werkzeug 2.1.
Changed in version 0.5: Read-only mode is enforced with immutable classes for all data.
Parameters
environThe WSGI environ is generated by the WSGI server and contains information about the server configuration and client request.
populate​_requestAdd this request object to the WSGI environ as environ['werkzeug.request']. Can be useful when debugging.
shallowMakes reading from stream (and any method that would read from it) raise a RuntimeError. Useful to prevent consuming the form data in middleware, which would make it unavailable to the final application.
Class Method application No summary
Class Method from​_values No summary
Method __enter__ Undocumented
Method __exit__ Undocumented
Method __init__ Undocumented
Method close Closes associated resources of this request object. This closes all file handles explicitly. You can also use the request object in a with statement which will automatically close it.
Method get​_data This reads the buffered incoming data from the client into one bytes object. By default this is cached but that behavior can be changed by setting cache to False.
Method get​_json Parse data as JSON.
Method make​_form​_data​_parser Creates the form data parser. Instantiates the form_data_parser_class with some parameters.
Method on​_json​_loading​_failed No summary
Class Variable disable​_data​_descriptor Undocumented
Class Variable input​_stream Undocumented
Class Variable is​_multiprocess Undocumented
Class Variable is​_multithread Undocumented
Class Variable is​_run​_once Undocumented
Class Variable max​_content​_length Undocumented
Class Variable max​_form​_memory​_size Undocumented
Class Variable remote​_user Undocumented
Instance Variable environ Undocumented
Instance Variable shallow Undocumented
Property data Contains the incoming request data as string in case it came with a mimetype Werkzeug does not handle.
Property files No summary
Property form No summary
Property json The parsed JSON data if mimetype indicates JSON (:mimetype:`application/json`, see is_json).
Property script​_root Alias for self.root_path. environ["SCRIPT_ROOT"] without a trailing slash.
Property stream No summary
Property url​_root Alias for root_url. The URL with scheme, host, and root path. For example, https://example.com/app/.
Property values A werkzeug.datastructures.CombinedMultiDict that combines args and form.
Property want​_form​_data​_parsed True if the request method carries content. By default this is true if a Content-Type is sent.
Method ​_get​_file​_stream Called to get a stream for the file upload.
Method ​_get​_stream​_for​_parsing This is the same as accessing stream with the difference that if it finds cached data from calling get_data first it will create a new stream out of the cached data.
Method ​_load​_form​_data No summary
Instance Variable ​_cached​_data Undocumented
Instance Variable ​_cached​_json Undocumented

Inherited from Request:

Method __repr__ Undocumented
Class Variable access​_control​_request​_headers Undocumented
Class Variable access​_control​_request​_method Undocumented
Class Variable charset Undocumented
Class Variable content​_encoding Undocumented
Class Variable content​_md5 Undocumented
Class Variable content​_type Undocumented
Class Variable date Undocumented
Class Variable encoding​_errors Undocumented
Class Variable max​_forwards Undocumented
Class Variable origin Undocumented
Class Variable referrer Undocumented
Class Variable trusted​_hosts Undocumented
Instance Variable headers Undocumented
Instance Variable method Undocumented
Instance Variable path Undocumented
Instance Variable query​_string Undocumented
Instance Variable remote​_addr Undocumented
Instance Variable root​_path Undocumented
Instance Variable scheme Undocumented
Instance Variable server Undocumented
Property accept​_charsets List of charsets this client supports as ~werkzeug.datastructures.CharsetAccept object.
Property accept​_encodings List of encodings this client accepts. Encodings in a HTTP term are compression encodings such as gzip. For charsets have a look at accept_charset.
Property accept​_languages List of languages this client accepts as ~werkzeug.datastructures.LanguageAccept object.
Property accept​_mimetypes List of mimetypes this client supports as ~werkzeug.datastructures.MIMEAccept object.
Property access​_route If a forwarded header exists this is a list of all ip addresses from the client ip to the last proxy server.
Property args The parsed URL parameters (the part in the URL after the question mark).
Property authorization The Authorization object in parsed form.
Property base​_url Like url but without the query string.
Property cache​_control A ~werkzeug.datastructures.RequestCacheControl object for the incoming cache control headers.
Property content​_length No summary
Property cookies A dict with the contents of all cookies transmitted with the request.
Property full​_path Requested path, including the query string.
Property host The host name the request was made to, including the port if it's non-standard. Validated with trusted_hosts.
Property host​_url The request URL scheme and host only.
Property if​_match An object containing all the etags in the If-Match header.
Property if​_modified​_since The parsed If-Modified-Since header as a datetime object.
Property if​_none​_match An object containing all the etags in the If-None-Match header.
Property if​_range The parsed If-Range header.
Property if​_unmodified​_since The parsed If-Unmodified-Since header as a datetime object.
Property is​_json Check if the mimetype indicates JSON data, either :mimetype:`application/json` or :mimetype:`application/*+json`.
Property is​_secure True if the request was made with a secure protocol (HTTPS or WSS).
Property mimetype No summary
Property mimetype​_params The mimetype parameters as dict. For example if the content type is text/html; charset=utf-8 the params would be {'charset': 'utf-8'}.
Property pragma No summary
Property range The parsed Range header.
Property root​_url The request URL scheme, host, and root path. This is the root that the application is accessed from.
Property url The full request URL with the scheme, host, root path, path, and query string.
Property url​_charset The charset that is assumed for URLs. Defaults to the value of charset.
Property user​_agent No summary
Method ​_parse​_content​_type Undocumented
Instance Variable ​_parsed​_content​_type Undocumented
@classmethod
def application(cls, f):

Decorate a function as responder that accepts the request as the last argument. This works like the responder decorator but the function is passed the request object as the last argument and the request object will be closed automatically:

@Request.application
def my_wsgi_app(request):
    return Response('Hello World!')

As of Werkzeug 0.14 HTTP exceptions are automatically caught and converted to responses instead of failing.

Parameters
f:t.Callable[[Request], WSGIApplication]the WSGI callable to decorate
Returns
WSGIApplicationa new WSGI callable
@classmethod
def from_values(cls, *args, **kwargs):

Create a new request object based on the values provided. If environ is given missing values are filled from there. This method is useful for small scripts when you need to simulate a request from an URL. Do not use this method for unittesting, there is a full featured client object (Client) that allows to create multipart requests, support for cookies etc.

This accepts the same options as the ~werkzeug.test.EnvironBuilder.

Changed in version 0.5: This method now accepts the same arguments as ~werkzeug.test.EnvironBuilder. Because of this the environ parameter is now called environ_overrides.
Parameters
*args:t.AnyUndocumented
**kwargs:t.AnyUndocumented
Returns
Requestrequest object
def __enter__(self):

Undocumented

Returns
RequestUndocumented
def __exit__(self, exc_type, exc_value, tb):

Undocumented

def __init__(self, environ, populate_request=True, shallow=False):

Undocumented

Parameters
environ:WSGIEnvironmentUndocumented
populate​_request:boolUndocumented
shallow:boolUndocumented
def close(self):

Closes associated resources of this request object. This closes all file handles explicitly. You can also use the request object in a with statement which will automatically close it.

New in version 0.9.
def get_data(self, cache=True, as_text=False, parse_form_data=False):

This reads the buffered incoming data from the client into one bytes object. By default this is cached but that behavior can be changed by setting cache to False.

Usually it's a bad idea to call this method without checking the content length first as a client could send dozens of megabytes or more to cause memory problems on the server.

Note that if the form data was already parsed this method will not return anything as form data parsing does not cache the data like this method does. To implicitly invoke form data parsing function set parse_form_data to True. When this is done the return value of this method will be an empty string if the form parser handles the data. This generally is not necessary as if the whole data is cached (which is the default) the form parser will used the cached data to parse the form data. Please be generally aware of checking the content length first in any case before calling this method to avoid exhausting server memory.

If as_text is set to True the return value will be a decoded string.

New in version 0.9.
Parameters
cache:boolUndocumented
as​_text:boolUndocumented
parse​_form​_data:boolUndocumented
Returns
t.Union[bytes, str]Undocumented
def get_json(self, force=False, silent=False, cache=True):

Parse data as JSON.

If the mimetype does not indicate JSON (:mimetype:`application/json`, see is_json), this returns None.

If parsing fails, on_json_loading_failed is called and its return value is used as the return value.

Parameters
force:boolIgnore the mimetype and always try to parse JSON.
silent:boolSilence parsing errors and return None instead.
cache:boolStore the parsed JSON to return for subsequent calls.
Returns
t.Optional[t.Any]Undocumented
def make_form_data_parser(self):

Creates the form data parser. Instantiates the form_data_parser_class with some parameters.

New in version 0.8.
Returns
FormDataParserUndocumented
def on_json_loading_failed(self, e):
Called if get_json parsing fails and isn't silenced. If this method returns a value, it is used as the return value for get_json. The default implementation raises ~werkzeug.exceptions.BadRequest.
Parameters
e:ValueErrorUndocumented
Returns
t.AnyUndocumented
disable_data_descriptor: t.Optional[bool] =

Undocumented

input_stream =

Undocumented

is_multiprocess =

Undocumented

is_multithread =

Undocumented

is_run_once =

Undocumented

max_content_length: t.Optional[int] =

Undocumented

max_form_memory_size: t.Optional[int] =

Undocumented

remote_user =

Undocumented

environ =

Undocumented

shallow =

Undocumented

@cached_property
data: bytes =
Contains the incoming request data as string in case it came with a mimetype Werkzeug does not handle.

~werkzeug.datastructures.MultiDict object containing all uploaded files. Each key in files is the name from the <input type="file" name="">. Each value in files is a Werkzeug ~werkzeug.datastructures.FileStorage object.

It basically behaves like a standard file object you know from Python, with the difference that it also has a ~werkzeug.datastructures.FileStorage.save function that can store the file on the filesystem.

Note that files will only contain data if the request method was POST, PUT or PATCH and the <form> that posted to the request had enctype="multipart/form-data". It will be empty otherwise.

See the ~werkzeug.datastructures.MultiDict / ~werkzeug.datastructures.FileStorage documentation for more details about the used data structure.

@cached_property
form: ImmutableMultiDict[str, str] =

The form parameters. By default an ~werkzeug.datastructures.ImmutableMultiDict is returned from this function. This can be changed by setting parameter_storage_class to a different type. This might be necessary if the order of the form data is important.

Please keep in mind that file uploads will not end up here, but instead in the files attribute.

Changed in version 0.9: Previous to Werkzeug 0.9 this would only contain form data for POST and PUT requests.
@property
json: t.Optional[t.Any] =

The parsed JSON data if mimetype indicates JSON (:mimetype:`application/json`, see is_json).

Calls get_json with default arguments.

@property
script_root: str =
Alias for self.root_path. environ["SCRIPT_ROOT"] without a trailing slash.
@cached_property
stream: t.IO[bytes] =

If the incoming form data was not encoded with a known mimetype the data is stored unmodified in this stream for consumption. Most of the time it is a better idea to use data which will give you that data as a string. The stream only returns the data once.

Unlike input_stream this stream is properly guarded that you can't accidentally read past the length of the input. Werkzeug will internally always refer to this stream to read data which makes it possible to wrap this object with a stream that does filtering.

Changed in version 0.9: This stream is now always available but might be consumed by the form parser later on. Previously the stream was only set if no parsing happened.
@cached_property
url_root: str =
Alias for root_url. The URL with scheme, host, and root path. For example, https://example.com/app/.
@cached_property
values: CombinedMultiDict[str, str] =

A werkzeug.datastructures.CombinedMultiDict that combines args and form.

For GET requests, only args are present, not form.

Changed in version 2.0: For GET requests, only args are present, not form.
@property
want_form_data_parsed: bool =

True if the request method carries content. By default this is true if a Content-Type is sent.

New in version 0.8.
def _get_file_stream(self, total_content_length, content_type, filename=None, content_length=None):

Called to get a stream for the file upload.

This must provide a file-like class with read(), readline() and seek() methods that is both writeable and readable.

The default implementation returns a temporary file if the total content length is higher than 500KB. Because many browsers do not provide a content length for the files only the total content length matters.

Parameters
total​_content​_length:t.Optional[int]the total content length of all the data in the request combined. This value is guaranteed to be there.
content​_type:t.Optional[str]the mimetype of the uploaded file.
filename:t.Optional[str]the filename of the uploaded file. May be None.
content​_length:t.Optional[int]the length of this file. This value is usually not provided because webbrowsers do not provide this value.
Returns
t.IO[bytes]Undocumented
def _get_stream_for_parsing(self):

This is the same as accessing stream with the difference that if it finds cached data from calling get_data first it will create a new stream out of the cached data.

New in version 0.9.3.
Returns
t.IO[bytes]Undocumented
def _load_form_data(self):

Method used internally to retrieve submitted data. After calling this sets form and files on the request object to multi dicts filled with the incoming form data. As a matter of fact the input stream will be empty afterwards. You can also call this method to force the parsing of the form data.

New in version 0.8.
_cached_data =

Undocumented

_cached_json =

Undocumented