Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #19829 -- Fixed index lookups for NumPy arrays in templates.

  • Loading branch information...
commit 7d5e35cdb46124e2471833b9570add1a00a1d9e0 1 parent f5e4a69
Julien Phalip jphalip authored
2  django/template/base.py
View
@@ -763,7 +763,7 @@ def _resolve_lookup(self, context):
for bit in self.lookups:
try: # dictionary lookup
current = current[bit]
- except (TypeError, AttributeError, KeyError):
+ except (TypeError, AttributeError, KeyError, ValueError):
try: # attribute lookup
current = getattr(current, bit)
except (TypeError, AttributeError):
17 tests/regressiontests/templates/tests.py
View
@@ -54,6 +54,12 @@
else:
raise
+# NumPy installed?
+try:
+ import numpy
+except ImportError:
+ numpy = False
+
from . import filters
#################################
@@ -1649,6 +1655,17 @@ def get_template_tests(self):
'verbatim-tag05': ('{% verbatim %}{% endverbatim %}{% verbatim %}{% endverbatim %}', {}, ''),
'verbatim-tag06': ("{% verbatim special %}Don't {% endverbatim %} just yet{% endverbatim special %}", {}, "Don't {% endverbatim %} just yet"),
}
+
+ if numpy:
+ tests.update({
+ # Numpy's array-index syntax allows a template to access a certain item of a subscriptable object.
+ 'numpy-array-index01': ("{{ var.1 }}", {"var": numpy.array(["first item", "second item"])}, "second item"),
+
+ # Fail silently when the array index is out of range.
+ 'numpy-array-index02': ("{{ var.5 }}", {"var": numpy.array(["first item", "second item"])}, ("", "INVALID")),
+ })
+
+
return tests
class TemplateTagLoading(unittest.TestCase):
Please sign in to comment.
Something went wrong with that request. Please try again.