mirror of
https://github.com/django/django.git
synced 2025-02-03 14:16:52 +00:00
Fixed #28662 -- Silenced join template filter error if arg isn't iterable.
This commit is contained in:
parent
d4fb742094
commit
f7036b3e26
@ -518,11 +518,11 @@ def first(value):
|
|||||||
@register.filter(is_safe=True, needs_autoescape=True)
|
@register.filter(is_safe=True, needs_autoescape=True)
|
||||||
def join(value, arg, autoescape=True):
|
def join(value, arg, autoescape=True):
|
||||||
"""Join a list with a string, like Python's ``str.join(list)``."""
|
"""Join a list with a string, like Python's ``str.join(list)``."""
|
||||||
if autoescape:
|
|
||||||
value = [conditional_escape(v) for v in value]
|
|
||||||
try:
|
try:
|
||||||
|
if autoescape:
|
||||||
|
value = [conditional_escape(v) for v in value]
|
||||||
data = conditional_escape(arg).join(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 value
|
||||||
return mark_safe(data)
|
return mark_safe(data)
|
||||||
|
|
||||||
|
@ -65,3 +65,11 @@ class FunctionTests(SimpleTestCase):
|
|||||||
join(['<a>', '<img>', '</a>'], '<br>', autoescape=False),
|
join(['<a>', '<img>', '</a>'], '<br>', autoescape=False),
|
||||||
'<a><br><img><br></a>',
|
'<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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user