diff options
| author | Mads Jensen <mje@inducks.org> | 2017-10-11 11:09:25 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-10-20 09:46:31 -0400 |
| commit | f7036b3e26745b944cd888fe7ed3f677b2caec8f (patch) | |
| tree | 410de1275df66ee9abbb8d8dc4ac4a112e3da7dc | |
| parent | d4fb742094dba99cb0db17f3aa9d9f5159af676f (diff) | |
Fixed #28662 -- Silenced join template filter error if arg isn't iterable.
| -rw-r--r-- | django/template/defaultfilters.py | 6 | ||||
| -rw-r--r-- | tests/template_tests/filter_tests/test_join.py | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index c857a0e0a3..d4bed6898d 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -518,11 +518,11 @@ def first(value): @register.filter(is_safe=True, needs_autoescape=True) def join(value, arg, autoescape=True): """Join a list with a string, like Python's ``str.join(list)``.""" - if autoescape: - value = [conditional_escape(v) for v in value] try: + if autoescape: + value = [conditional_escape(v) for v in value] data = conditional_escape(arg).join(value) - except AttributeError: # fail silently but nicely + except TypeError: # Fail silently if arg isn't iterable. return value return mark_safe(data) diff --git a/tests/template_tests/filter_tests/test_join.py b/tests/template_tests/filter_tests/test_join.py index 2d2a9cf78e..43ac0da7c2 100644 --- a/tests/template_tests/filter_tests/test_join.py +++ b/tests/template_tests/filter_tests/test_join.py @@ -65,3 +65,11 @@ class FunctionTests(SimpleTestCase): join(['<a>', '<img>', '</a>'], '<br>', autoescape=False), '<a><br><img><br></a>', ) + + def test_noniterable_arg(self): + obj = object() + self.assertEqual(join(obj, '<br>'), obj) + + def test_noniterable_arg_autoescape_off(self): + obj = object() + self.assertEqual(join(obj, '<br>', autoescape=False), obj) |
