Opened 6 days ago

Last modified 29 hours ago

#36049 assigned Bug

The `upper` template filter should set `is_safe=True` — at Version 2

Reported by: Lily Foote Owned by:
Component: Template system Version: 5.1
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: yes Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description (last modified by Lily Foote)

I noticed this inconsistency between upper and lower where upper has is_safe=False but lower has is_safe=True. I think lower is correct and upper is incorrect.

This has been the case ever since is_safe was introduced in https://github.com/django/django/commit/356662cf74c99fac90afb0f5e6aac8d2d573e62a.

from django.template import engines
from django.utils.safestring import mark_safe


def test_is_safe():
    template = """
{{ html|upper }}
{{ html|lower }}
"""
    template = engines["django"].from_string(template)
    html = mark_safe("<p>Hello World!</p>")
    assert template.render({"html": html}) == """
<P>HELLO WORLD!</P>
<p>hello world!</p>
"""

E       AssertionError: assert '\n&lt;P&gt;H... world!</p>\n' == '\n<P>HELLO W... world!</P>\n'
E         
E           
E         - <P>HELLO WORLD!</P>
E         + &lt;P&gt;HELLO WORLD!&lt;/P&gt;
E           <p>hello world!</p>

Change History (2)

comment:1 by Lily Foote, 6 days ago

Description: modified (diff)

comment:2 by Lily Foote, 6 days ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top