'This attribute is actually a "reified" property which returns an
instance of the :class:`pyramid.response.Response`. class.  The
response object returned does not exist until this attribute is
accessed.  Subsequent accesses will return the same Response object.
The ``request.response`` API is used by renderers.  A render obtains
the response object it will return from a view that uses that renderer
by accessing ``request.response``.  Therefore, it\'s possible to use the
``request.response`` API to set up a response object with "the
right" attributes (e.g. by calling ``request.response.set_cookie()``)
within a view that uses a renderer.  Mutations to this response object
will be preserved in the response sent to the client.'

@reify
def response(self):

    response_factory = _get_response_factory(self.registry)
    return response_factory(self)
