forked from orbit-oss/flask
Preserve the request context in debug mode.
This makes it possible to access request information in the interactive debugger. Closes #8.
This commit is contained in:
parent
40e0024d7b
commit
7b5015010b
1 changed files with 11 additions and 7 deletions
18
flask.py
18
flask.py
|
|
@ -14,7 +14,6 @@ import os
|
|||
import sys
|
||||
|
||||
from threading import local
|
||||
from contextlib import contextmanager
|
||||
from jinja2 import Environment, PackageLoader, FileSystemLoader
|
||||
from werkzeug import Request as RequestBase, Response as ResponseBase, \
|
||||
LocalStack, LocalProxy, create_environ, cached_property, \
|
||||
|
|
@ -84,6 +83,16 @@ class _RequestContext(object):
|
|||
self.g = _RequestGlobals()
|
||||
self.flashes = None
|
||||
|
||||
def __enter__(self):
|
||||
_request_ctx_stack.push(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.
|
||||
if tb is None or not self.app.debug:
|
||||
_request_ctx_stack.pop()
|
||||
|
||||
|
||||
def url_for(endpoint, **values):
|
||||
"""Generates a URL to the given endpoint with the method provided.
|
||||
|
|
@ -618,7 +627,6 @@ class Flask(object):
|
|||
response = self.process_response(response)
|
||||
return response(environ, start_response)
|
||||
|
||||
@contextmanager
|
||||
def request_context(self, environ):
|
||||
"""Creates a request context from the given environment and binds
|
||||
it to the current context. This must be used in combination with
|
||||
|
|
@ -632,11 +640,7 @@ class Flask(object):
|
|||
|
||||
:params environ: a WSGI environment
|
||||
"""
|
||||
_request_ctx_stack.push(_RequestContext(self, environ))
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
_request_ctx_stack.pop()
|
||||
return _RequestContext(self, environ)
|
||||
|
||||
def test_request_context(self, *args, **kwargs):
|
||||
"""Creates a WSGI environment from the given values (see
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue