templatetags: make |get return None on errors (#46507)

This commit is contained in:
Frédéric Péters 2020-09-10 07:49:48 +02:00
parent ca9907af49
commit 91e83958fa
2 changed files with 9 additions and 1 deletions

View File

@ -623,6 +623,11 @@ def test_get_filter():
tmpl = Template('{{ foo|get:0 }}')
assert tmpl.render({'foo': ['bar', 'baz']}) == 'bar'
tmpl = Template('{{ foo|get:0|default_if_none:"" }}')
assert tmpl.render({'foo': ""}) == ''
assert tmpl.render({'foo': None}) == ''
assert tmpl.render({'foo': 23}) == ''
def test_get_on_lazy_var():
FormDef.wipe()

View File

@ -60,7 +60,10 @@ def get(mapping, key):
key = int(key)
except (TypeError, ValueError):
pass
return mapping[key]
try:
return mapping[key]
except (TypeError, IndexError, KeyError):
return None
@register.filter