Werkzeug

Extra Wrappers

Extra wrappers or mixins contributed by the community. These wrappers can be mixed in into request objects to add extra functionality.

Example:

from werkzeug import Request as RequestBase
from werkzeug.contrib.wrappers import JSONRequestMixin

class Request(RequestBase, JSONRequestMixin):
    pass

Afterwards this request object provides the extra functionality of the JSONRequestMixin.

class werkzeug.contrib.wrappers.JSONRequestMixin

Add json method to a request object. This will parse the input data through simplejson if possible.

BadRequest will be raised if the content-type is not json or if the data itself cannot be parsed as json.

json
Get the result of simplejson.loads if possible.
class werkzeug.contrib.wrappers.ProtobufRequestMixin

Add protobuf parsing method to a request object. This will parse the input data through protobuf if possible.

BadRequest will be raised if the content-type is not protobuf or if the data itself cannot be parsed property.

parse_protobuf(proto_type)
Parse the data into an instance of proto_type.
protobuf_check_initialization
by default the ProtobufRequestMixin will raise a BadRequest if the object is not initialized. You can bypass that check by setting this attribute to False.
class werkzeug.contrib.wrappers.RoutingArgsRequestMixin

This request mixin adds support for the wsgiorg routing args specification.

routing_args
The positional URL arguments as tuple.
routing_vars
The keyword URL arguments as dict.
class werkzeug.contrib.wrappers.ReverseSlashBehaviorRequestMixin

This mixin reverses the trailing slash behavior of script_root and path. This makes it possible to use urljoin() directly on the paths.

Because it changes the behavior or Request this class has to be mixed in before the actual request class:

class MyRequest(ReverseSlashBehaviorRequestMixin, Request):
    pass

This example shows the differences (for an application mounted on /application and the request going to /application/foo/bar):

  normal behavior reverse behavior
script_root /application /application/
path /foo/bar foo/bar
path
Requested path as unicode. This works a bit like the regular path info in the WSGI environment but will not include a leading slash.
script_root
The root path of the script includling a trailing slash.