fix: Allow None for attrs in html_attrs tag (#591)

This commit is contained in:
Juro Oravec 2024-08-21 14:32:36 +02:00 committed by GitHub
parent 03af25aad6
commit 3a599ff369
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 30 additions and 2 deletions

View file

@ -33,8 +33,8 @@ class HtmlAttrsNode(Node):
resolved_value = safe_resolve(value, context)
append_attrs.append((key, resolved_value))
defaults = safe_resolve(self.defaults, context) if self.defaults else {}
attrs = safe_resolve(self.attributes, context) if self.attributes else {}
defaults = safe_resolve(self.defaults, context) or {} if self.defaults else {}
attrs = safe_resolve(self.attributes, context) or {} if self.attributes else {}
# Merge it
final_attrs = {**defaults, **attrs}

View file

@ -360,3 +360,31 @@ class HtmlAttrsTests(BaseTestCase):
""",
)
self.assertNotIn("override-me", rendered)
def test_tag_null_attrs_and_defaults(self):
@register("test")
class AttrsComponent(Component):
template: types.django_html = """
{% load component_tags %}
<div {% html_attrs attrs defaults %}>
content
</div>
"""
def get_context_data(self, *args, attrs):
return {
"attrs": None,
"defaults": None,
}
template = Template(self.template_str)
rendered = template.render(Context({"class_var": "padding-top-8"}))
self.assertHTMLEqual(
rendered,
"""
<div >
content
</div>
""",
)
self.assertNotIn("override-me", rendered)