Fixed #6057 -- Mark rendered template output as safe for auto-escaping purposes.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@6778 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-11-30 15:32:01 +00:00
parent 275cffaab1
commit 8de4ed9c8c
2 changed files with 8 additions and 4 deletions

View File

@ -804,7 +804,7 @@ class NodeList(list):
bits.append(self.render_node(node, context)) bits.append(self.render_node(node, context))
else: else:
bits.append(node) bits.append(node)
return ''.join([force_unicode(b) for b in bits]) return mark_safe(''.join([force_unicode(b) for b in bits]))
def get_nodes_by_type(self, nodetype): def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type" "Return a list of all nodes of the given type"

View File

@ -3,6 +3,7 @@
unicode_tests = ur""" unicode_tests = ur"""
Templates can be created from unicode strings. Templates can be created from unicode strings.
>>> from django.template import * >>> from django.template import *
>>> from django.utils.safestring import SafeData
>>> t1 = Template(u'ŠĐĆŽćžšđ {{ var }}') >>> t1 = Template(u'ŠĐĆŽćžšđ {{ var }}')
Templates can also be created from bytestrings. These are assumed by encoded Templates can also be created from bytestrings. These are assumed by encoded
@ -24,10 +25,13 @@ Contexts can be constructed from unicode or UTF-8 bytestrings.
>>> c4 = Context({u'var': '\xc4\x90\xc4\x91'}) >>> c4 = Context({u'var': '\xc4\x90\xc4\x91'})
Since both templates and all four contexts represent the same thing, they all Since both templates and all four contexts represent the same thing, they all
render the same (and are returned as unicode objects). render the same (and are returned as unicode objects and "safe" objects as
well, for auto-escaping purposes).
>>> t1.render(c3) == t2.render(c3) >>> t1.render(c3) == t2.render(c3)
True True
>>> type(t1.render(c3)) >>> isinstance(t1.render(c3), unicode)
<type 'unicode'> True
>>> isinstance(t1.render(c3), SafeData)
True
""" """