Fixed #10545 -- Mentioned that template context variables are scoped to the block in which they're assigned. Thanks to yaniv.haber for the report and timo for the patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14350 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Gabriel Hurley 2010-10-25 20:50:53 +00:00
parent 321e48f51b
commit 9facaec719
1 changed files with 8 additions and 1 deletions

View File

@ -790,7 +790,7 @@ difference between this case and the previous ``inclusion_tag`` example.
Setting a variable in the context Setting a variable in the context
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The above example simply output a value. Generally, it's more flexible if your The above examples simply output a value. Generally, it's more flexible if your
template tags set template variables instead of outputting values. That way, template tags set template variables instead of outputting values. That way,
template authors can reuse the values that your template tags create. template authors can reuse the values that your template tags create.
@ -816,6 +816,13 @@ Here's how you'd use this new version of the tag:
{% current_time "%Y-%M-%d %I:%M %p" %}<p>The time is {{ current_time }}.</p> {% current_time "%Y-%M-%d %I:%M %p" %}<p>The time is {{ current_time }}.</p>
.. admonition:: Variable scope in context
Any variable set in the context will only be available in the same ``block``
of the template in which it was assigned. This behaviour is intentional;
it provides a scope for variables so that they don't conflict with
context in other blocks.
But, there's a problem with ``CurrentTimeNode2``: The variable name But, there's a problem with ``CurrentTimeNode2``: The variable name
``current_time`` is hard-coded. This means you'll need to make sure your ``current_time`` is hard-coded. This means you'll need to make sure your
template doesn't use ``{{ current_time }}`` anywhere else, because the template doesn't use ``{{ current_time }}`` anywhere else, because the