Template system now supports variables whose str() returns a Unicode object with non-ascii characters. Thanks, gabor
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4161 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
460ccfc045
commit
be217bce53
|
@ -742,7 +742,11 @@ class VariableNode(Node):
|
|||
def encode_output(self, output):
|
||||
# Check type so that we don't run str() on a Unicode object
|
||||
if not isinstance(output, basestring):
|
||||
try:
|
||||
return str(output)
|
||||
except UnicodeEncodeError:
|
||||
# If __str__() returns a Unicode object, convert it to bytestring.
|
||||
return unicode(output).encode(settings.DEFAULT_CHARSET)
|
||||
elif isinstance(output, unicode):
|
||||
return output.encode(settings.DEFAULT_CHARSET)
|
||||
else:
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from django.conf import settings
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -62,6 +63,11 @@ class OtherClass:
|
|||
def method(self):
|
||||
return "OtherClass.method"
|
||||
|
||||
class UnicodeInStrClass:
|
||||
"Class whose __str__ returns a Unicode object."
|
||||
def __str__(self):
|
||||
return u'ŠĐĆŽćžšđ'
|
||||
|
||||
class Templates(unittest.TestCase):
|
||||
def test_templates(self):
|
||||
# NOW and NOW_tz are used by timesince tag tests.
|
||||
|
@ -173,6 +179,10 @@ class Templates(unittest.TestCase):
|
|||
# Empty strings can be passed as arguments to filters
|
||||
'basic-syntax36': (r'{{ var|join:"" }}', {'var': ['a', 'b', 'c']}, 'abc'),
|
||||
|
||||
# If a variable has a __str__() that returns a Unicode object, the value
|
||||
# will be converted to a bytestring.
|
||||
'basic-syntax37': (r'{{ var }}', {'var': UnicodeInStrClass()}, '\xc5\xa0\xc4\x90\xc4\x86\xc5\xbd\xc4\x87\xc5\xbe\xc5\xa1\xc4\x91'),
|
||||
|
||||
### COMMENT SYNTAX ########################################################
|
||||
'comment-syntax01': ("{# this is hidden #}hello", {}, "hello"),
|
||||
'comment-syntax02': ("{# this is hidden #}hello{# foo #}", {}, "hello"),
|
||||
|
|
Loading…
Reference in New Issue