Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #16335 -- Clarified an unintuitive behavior.

The DTL will perform dict lookup before method lookup, which yields
an unexpected result for defaultdicts.
  • Loading branch information...
commit d171b3cc0b32374fd5891254b04693e9ec8ed946 1 parent 46648b6
@aaugustin aaugustin authored
Showing with 12 additions and 0 deletions.
  1. +12 −0 docs/topics/templates.txt
View
12 docs/topics/templates.txt
@@ -97,6 +97,18 @@ Use a dot (``.``) to access attributes of a variable.
* Method call
* 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
``title`` attribute of the ``section`` object.
Please sign in to comment.
Something went wrong with that request. Please try again.