Allow loading template from iterable
This commit is contained in:
parent
04bb720d38
commit
0b3369355d
2 changed files with 24 additions and 3 deletions
|
|
@ -109,17 +109,19 @@ def _render(template, context, app):
|
||||||
return rv
|
return rv
|
||||||
|
|
||||||
|
|
||||||
def render_template(template_name, **context):
|
def render_template(template_name_or_list, **context):
|
||||||
"""Renders a template from the template folder with the given
|
"""Renders a template from the template folder with the given
|
||||||
context.
|
context.
|
||||||
|
|
||||||
:param template_name: the name of the template to be rendered
|
:param template_name_or_list: the name of the template to be
|
||||||
|
rendered, or an iterable with template names
|
||||||
|
the first one existing will be rendered
|
||||||
:param context: the variables that should be available in the
|
:param context: the variables that should be available in the
|
||||||
context of the template.
|
context of the template.
|
||||||
"""
|
"""
|
||||||
ctx = _request_ctx_stack.top
|
ctx = _request_ctx_stack.top
|
||||||
ctx.app.update_template_context(context)
|
ctx.app.update_template_context(context)
|
||||||
return _render(ctx.app.jinja_env.get_template(template_name),
|
return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list),
|
||||||
context, ctx.app)
|
context, ctx.app)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,25 @@ class TemplatingTestCase(FlaskTestCase):
|
||||||
self.assert_equal(rv.data, 'Hello Custom World!')
|
self.assert_equal(rv.data, 'Hello Custom World!')
|
||||||
|
|
||||||
|
|
||||||
|
def test_iterable_loader(self):
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
@app.context_processor
|
||||||
|
def context_processor():
|
||||||
|
return {'whiskey': 'Jameson'}
|
||||||
|
@app.route('/')
|
||||||
|
def index():
|
||||||
|
return flask.render_template(
|
||||||
|
['no_template.xml', # should skip this one
|
||||||
|
'simple_template.html', # should render this
|
||||||
|
'context_template.html'],
|
||||||
|
value=23)
|
||||||
|
|
||||||
|
rv = app.test_client().get('/')
|
||||||
|
self.assert_equal(rv.data, '<h1>Jameson</h1>')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
suite = unittest.TestSuite()
|
suite = unittest.TestSuite()
|
||||||
suite.addTest(unittest.makeSuite(TemplatingTestCase))
|
suite.addTest(unittest.makeSuite(TemplatingTestCase))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue