Fixed #33631 -- Marked {% blocktranslate asvar %} result as HTML safe.
This commit is contained in:
parent
7faf25d682
commit
d4c5d2b52c
|
@ -5,7 +5,7 @@ from django.template import Library, Node, TemplateSyntaxError, Variable
|
|||
from django.template.base import TokenType, render_value_in_context
|
||||
from django.template.defaulttags import token_kwargs
|
||||
from django.utils import translation
|
||||
from django.utils.safestring import SafeData, mark_safe
|
||||
from django.utils.safestring import SafeData, SafeString, mark_safe
|
||||
|
||||
register = Library()
|
||||
|
||||
|
@ -198,7 +198,7 @@ class BlockTranslateNode(Node):
|
|||
with translation.override(None):
|
||||
result = self.render(context, nested=True)
|
||||
if self.asvar:
|
||||
context[self.asvar] = result
|
||||
context[self.asvar] = SafeString(result)
|
||||
return ""
|
||||
else:
|
||||
return result
|
||||
|
|
|
@ -270,6 +270,9 @@ Miscellaneous
|
|||
* The undocumented ``django.http.multipartparser.parse_header()`` function is
|
||||
removed. Use ``django.utils.http.parse_header_parameters()`` instead.
|
||||
|
||||
* :ttag:`{% blocktranslate asvar … %}<blocktranslate>` result is now marked as
|
||||
safe for (HTML) output purposes.
|
||||
|
||||
.. _deprecated-features-4.2:
|
||||
|
||||
Features deprecated in 4.2
|
||||
|
|
|
@ -707,6 +707,11 @@ In practice you'll use this to get a string you can use in multiple places in a
|
|||
template or so you can use the output as an argument for other template tags or
|
||||
filters.
|
||||
|
||||
.. versionchanged:: 4.2
|
||||
|
||||
In older versions, ``asvar`` instances weren't marked as safe for (HTML)
|
||||
output purposes.
|
||||
|
||||
``{% blocktranslate %}`` also supports :ref:`contextual
|
||||
markers<contextual-markers>` using the ``context`` keyword:
|
||||
|
||||
|
|
|
@ -416,6 +416,22 @@ class I18nBlockTransTagTests(SimpleTestCase):
|
|||
output = self.engine.render_to_string("i18n41")
|
||||
self.assertEqual(output, ">Error: Seite nicht gefunden<")
|
||||
|
||||
@setup(
|
||||
{
|
||||
"i18n_asvar_safestring": (
|
||||
"{% load i18n %}"
|
||||
"{% blocktranslate asvar the_title %}"
|
||||
"{{title}}other text"
|
||||
"{% endblocktranslate %}"
|
||||
"{{ the_title }}"
|
||||
)
|
||||
}
|
||||
)
|
||||
def test_i18n_asvar_safestring(self):
|
||||
context = {"title": "<Main Title>"}
|
||||
output = self.engine.render_to_string("i18n_asvar_safestring", context=context)
|
||||
self.assertEqual(output, "<Main Title>other text")
|
||||
|
||||
@setup(
|
||||
{
|
||||
"template": (
|
||||
|
|
Loading…
Reference in New Issue