Hi,

I am having an issue with rendering Django's ErrorList if one of my error 
list items is unicode. When Django renders my errorlist

{{ form.non_field_errors }}

it runs the following 
code<https://github.com/django/django/blob/1.3.1/django/forms/util.py#L46>
:

class ErrorList(list, StrAndUnicode):
    """
    A collection of errors that knows how to display itself in various formats.
    """
    def __unicode__(self):
        return self.as_ul()

    def as_ul(self):
        if not self: return u''
        return mark_safe(u'<ul class="errorlist">%s</ul>'
                % ''.join([u'<li>%s</li>' % 
conditional_escape(force_unicode(e)) for e in self])) 

then in 
force_unicode<https://github.com/django/django/blob/1.3.1/django/utils/encoding.py#L74>
:

s = unicode(str(s), encoding, errors) 

and then translation in 
lazy<https://github.com/django/django/blob/1.3.1/django/utils/functional.py#L209>
:

def __str_cast(self):
    return str(self.__func(*self.__args, **self.__kw))

The problem is that my string contains 'å' symbol and str(u'å') raises 
UnicodeEncodeError. Is there a good reason why force_unicode and lazy do 
not use smart_str? I have to do it myself and provide error messages as str 
objects 
instead of unicode to make it work.

So I get TemplateSyntaxError *Caught UnicodeEncodeError while rendering: 
'ascii' codec can't encode character u'\xe5' in position 17: ordinal not in 
range(128)*. This seems telling that rendering my error list item (which is 
u'å') caused the first UnicodeEncodeError having unicode message *'ascii' 
codec can't encode character u'\xe5'* and then second UnicodeEncodeError 
while rendering the message from the first one. Am I mistaken?

Django version: 1.3.1 (but this seems to happen in 1.4 as well)

Full traceback:
https://raw.github.com/gist/2499077/ba60cb752acdb429dd6c2814ffb24272037a367a/UnicodeEncodeError.txt
http://stackoverflow.com/questions/10332674/django-unicodeencodeerror-in-errorlist

Thanks,
Andrei

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/_WVHnr_iyaIJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to