mirror of
				https://github.com/django/django.git
				synced 2025-10-27 07:36:08 +00:00 
			
		
		
		
	Fixed #19829 -- Fixed index lookups for NumPy arrays in templates.
This commit is contained in:
		| @@ -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): | ||||
|   | ||||
| @@ -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): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user