[1.0.X] Fixed #10014 -- Don't crash when using debug template tag inside a block node tag.

Returning non-ASCII characters from TextNode.__repr__ was causing
problems in the BlockNode.__repr__ method (and probably in other places
we don't know about yet). We now forcibly convert to ascii and replace any
unconvertible characters, rather than returning some moderately
corrupted data in the non-ASCII case.

Backport of r9757 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@9758 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2009-01-16 09:00:24 +00:00
parent ad93542c8f
commit 7cef4ecd19
1 changed files with 3 additions and 2 deletions

View File

@ -55,7 +55,7 @@ from django.template.context import Context, RequestContext, ContextPopException
from django.utils.itercompat import is_iterable
from django.utils.functional import curry, Promise
from django.utils.text import smart_split
from django.utils.encoding import smart_unicode, force_unicode
from django.utils.encoding import smart_unicode, force_unicode, smart_str
from django.utils.translation import ugettext as _
from django.utils.safestring import SafeData, EscapeData, mark_safe, mark_for_escaping
from django.utils.html import escape
@ -785,7 +785,8 @@ class TextNode(Node):
self.s = s
def __repr__(self):
return "<Text Node: '%s'>" % self.s[:25]
return "<Text Node: '%s'>" % smart_str(self.s[:25], 'ascii',
errors='replace')
def render(self, context):
return self.s