Browse Source

Fixed a documentation error and implemented template context processors.

pull/1638/head
Armin Ronacher 15 years ago
parent
commit
a01e8b49ca
  1. 32
      flask.py

32
flask.py

@ -130,6 +130,18 @@ def render_template_string(source, **context):
return current_app.jinja_env.from_string(source).render(context) return current_app.jinja_env.from_string(source).render(context)
def _default_template_ctx_processor():
"""Default template context processor. Injects `request`,
`session` and `g`.
"""
reqctx = _request_ctx_stack.top
return dict(
request=reqctx.request,
session=reqctx.session,
g=reqctx.g
)
class Flask(object): class Flask(object):
"""The flask object implements a WSGI application and acts as the central """The flask object implements a WSGI application and acts as the central
object. It is passed the name of the module or package of the object. It is passed the name of the module or package of the
@ -216,6 +228,14 @@ class Flask(object):
#: To register a function here use the :meth:`request_shtdown` #: To register a function here use the :meth:`request_shtdown`
#: decorator. #: decorator.
self.request_shutdown_funcs = [] self.request_shutdown_funcs = []
#: a list of functions that are called without arguments
#: to populate the template context. Each returns a dictionary
#: that the template context is updated with.
#: To register a function here, use the :meth:`context_processor`
#: decorator.
self.template_context_processors = [_default_template_ctx_processor]
self.url_map = Map() self.url_map = Map()
if self.static_path is not None: if self.static_path is not None:
@ -248,9 +268,8 @@ class Flask(object):
to add extra variables. to add extra variables.
""" """
reqctx = _request_ctx_stack.top reqctx = _request_ctx_stack.top
context['request'] = reqctx.request for func in self.template_context_processors:
context['session'] = reqctx.session context.update(func())
context['g'] = reqctx.g
def run(self, host='localhost', port=5000, **options): def run(self, host='localhost', port=5000, **options):
"""Runs the application on a local development server. If the """Runs the application on a local development server. If the
@ -325,7 +344,7 @@ class Flask(object):
:param session: the session to be saved (a :param session: the session to be saved (a
:class:`~werkzeug.contrib.securecookie.SecureCookie` :class:`~werkzeug.contrib.securecookie.SecureCookie`
object) object)
:param request: an instance of :attr:`response_class` :param response: an instance of :attr:`response_class`
""" """
if session is not None: if session is not None:
session.save_cookie(response, self.session_cookie_name) session.save_cookie(response, self.session_cookie_name)
@ -462,6 +481,11 @@ class Flask(object):
self.request_shutdown_funcs.append(f) self.request_shutdown_funcs.append(f)
return f return f
def context_processor(self, f):
"""Registers a template context processor function."""
self.template_context_processors.append(f)
return f
def match_request(self): def match_request(self):
"""Matches the current request against the URL map and also """Matches the current request against the URL map and also
stores the endpoint and view arguments on the request object stores the endpoint and view arguments on the request object

Loading…
Cancel
Save