Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

67 lines (52 sloc) 2.095 kb
# -*- coding: utf-8 -*-
Implements the objects required to keep the context.
:copyright: (c) 2010 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
from werkzeug.exceptions import HTTPException
from .globals import _request_ctx_stack
from .session import _NullSession
class _RequestGlobals(object):
class _RequestContext(object):
"""The request context contains all request relevant information. It is
created at the beginning of the request and pushed to the
`_request_ctx_stack` and removed at the end of it. It will create the
URL adapter and request object for the WSGI environment provided.
def __init__(self, app, environ): = app
self.request = app.request_class(environ)
self.url_adapter = app.create_url_adapter(self.request)
self.session = app.open_session(self.request)
if self.session is None:
self.session = _NullSession()
self.g = _RequestGlobals()
self.flashes = None
url_rule, self.request.view_args = \
self.request.url_rule = url_rule
except HTTPException, e:
self.request.routing_exception = e
def push(self):
"""Binds the request context."""
def pop(self):
"""Pops the request context."""
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, tb):
# do not pop the request stack if we are in debug mode and an
# exception happened. This will allow the debugger to still
# access the request object in the interactive shell. Furthermore
# the context can be force kept alive for the test client.
# See flask.testing for how this works.
if not self.request.environ.get('flask._preserve_context') and \
(tb is None or not
Jump to Line
Something went wrong with that request. Please try again.