summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/template/base.py2
-rw-r--r--tests/regressiontests/templates/tests.py17
2 files changed, 18 insertions, 1 deletions
diff --git a/django/template/base.py b/django/template/base.py
index 9577d586d8..f43194de4a 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -763,7 +763,7 @@ class Variable(object):
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):
diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py
index 8d2a45b8fc..255671435a 100644
--- a/tests/regressiontests/templates/tests.py
+++ b/tests/regressiontests/templates/tests.py
@@ -54,6 +54,12 @@ except ImportError as e:
else:
raise
+# NumPy installed?
+try:
+ import numpy
+except ImportError:
+ numpy = False
+
from . import filters
#################################
@@ -1649,6 +1655,17 @@ class Templates(TestCase):
'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):