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.base import TokenType, render_value_in_context
|
||||||
from django.template.defaulttags import token_kwargs
|
from django.template.defaulttags import token_kwargs
|
||||||
from django.utils import translation
|
from django.utils import translation
|
||||||
from django.utils.safestring import SafeData, mark_safe
|
from django.utils.safestring import SafeData, SafeString, mark_safe
|
||||||
|
|
||||||
register = Library()
|
register = Library()
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ class BlockTranslateNode(Node):
|
||||||
with translation.override(None):
|
with translation.override(None):
|
||||||
result = self.render(context, nested=True)
|
result = self.render(context, nested=True)
|
||||||
if self.asvar:
|
if self.asvar:
|
||||||
context[self.asvar] = result
|
context[self.asvar] = SafeString(result)
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
return result
|
return result
|
||||||
|
|
|
@ -270,6 +270,9 @@ Miscellaneous
|
||||||
* The undocumented ``django.http.multipartparser.parse_header()`` function is
|
* The undocumented ``django.http.multipartparser.parse_header()`` function is
|
||||||
removed. Use ``django.utils.http.parse_header_parameters()`` instead.
|
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:
|
.. _deprecated-features-4.2:
|
||||||
|
|
||||||
Features deprecated in 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
|
template or so you can use the output as an argument for other template tags or
|
||||||
filters.
|
filters.
|
||||||
|
|
||||||
|
.. versionchanged:: 4.2
|
||||||
|
|
||||||
|
In older versions, ``asvar`` instances weren't marked as safe for (HTML)
|
||||||
|
output purposes.
|
||||||
|
|
||||||
``{% blocktranslate %}`` also supports :ref:`contextual
|
``{% blocktranslate %}`` also supports :ref:`contextual
|
||||||
markers<contextual-markers>` using the ``context`` keyword:
|
markers<contextual-markers>` using the ``context`` keyword:
|
||||||
|
|
||||||
|
|
|
@ -416,6 +416,22 @@ class I18nBlockTransTagTests(SimpleTestCase):
|
||||||
output = self.engine.render_to_string("i18n41")
|
output = self.engine.render_to_string("i18n41")
|
||||||
self.assertEqual(output, ">Error: Seite nicht gefunden<")
|
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(
|
@setup(
|
||||||
{
|
{
|
||||||
"template": (
|
"template": (
|
||||||
|
|
Loading…
Reference in New Issue