[1.4.x] Fixed #13608 - Noted that template lookups use literal values.
Backport of 74c025d028
from master.
This commit is contained in:
parent
c088a42670
commit
c2f1aa5a3c
|
@ -122,6 +122,10 @@ dot in a variable name, it tries the following lookups, in this order:
|
||||||
* Attribute lookup. Example: ``foo.bar``
|
* Attribute lookup. Example: ``foo.bar``
|
||||||
* List-index lookup. Example: ``foo[bar]``
|
* List-index lookup. Example: ``foo[bar]``
|
||||||
|
|
||||||
|
Note that "bar" in a template expression like ``{{ foo.bar }}`` will be
|
||||||
|
interpreted as a literal string and not using the value of the variable "bar",
|
||||||
|
if one exists in the template context.
|
||||||
|
|
||||||
The template system uses the first lookup type that works. It's short-circuit
|
The template system uses the first lookup type that works. It's short-circuit
|
||||||
logic. Here are a few examples::
|
logic. Here are a few examples::
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,18 @@ Use a dot (``.``) to access attributes of a variable.
|
||||||
* Method call
|
* Method call
|
||||||
* List-index lookup
|
* List-index lookup
|
||||||
|
|
||||||
|
This can cause some unexpected behavior with objects that override
|
||||||
|
dictionary lookup. For example, consider the following code snippet that
|
||||||
|
attempts to loop over a ``collections.defaultdict``::
|
||||||
|
|
||||||
|
{% for k, v in defaultdict.iteritems %}
|
||||||
|
Do something with k and v here...
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
Because dictionary lookup happens first, that behavior kicks in and provides
|
||||||
|
a default value instead of using the intended ``.iteritems()``
|
||||||
|
method. In this case, consider converting to a dictionary first.
|
||||||
|
|
||||||
In the above example, ``{{ section.title }}`` will be replaced with the
|
In the above example, ``{{ section.title }}`` will be replaced with the
|
||||||
``title`` attribute of the ``section`` object.
|
``title`` attribute of the ``section`` object.
|
||||||
|
|
||||||
|
@ -104,6 +116,10 @@ If you use a variable that doesn't exist, the template system will insert
|
||||||
the value of the :setting:`TEMPLATE_STRING_IF_INVALID` setting, which is set
|
the value of the :setting:`TEMPLATE_STRING_IF_INVALID` setting, which is set
|
||||||
to ``''`` (the empty string) by default.
|
to ``''`` (the empty string) by default.
|
||||||
|
|
||||||
|
Note that "bar" in a template expression like ``{{ foo.bar }}`` will be
|
||||||
|
interpreted as a literal string and not using the value of the variable "bar",
|
||||||
|
if one exists in the template context.
|
||||||
|
|
||||||
Filters
|
Filters
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue