Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误列表中的Django UnicodeError_Python_Django_Unicode - Fatal编程技术网

Python 错误列表中的Django UnicodeError

Python 错误列表中的Django UnicodeError,python,django,unicode,Python,Django,Unicode,如果我的一个错误列表项是unicode,我在呈现Django的错误列表时遇到问题。当Django呈现我的错误列表时 {{ form.non_field_errors }} : 然后翻译成: 问题是我的字符串包含“å”符号和str(u'å')引发UnicodeEncodeError。force_unicode和lazy为什么不使用smart_str?我必须自己做,并以str对象而不是unicode的形式提供错误消息,以使其正常工作 因此,我在渲染时发现TemplateSyntaxError Un

如果我的一个错误列表项是unicode,我在呈现Django的错误列表时遇到问题。当Django呈现我的错误列表时

{{ form.non_field_errors }}
:

然后翻译成:

问题是我的字符串包含“å”符号和
str(u'å')
引发
UnicodeEncodeError
force_unicode
lazy
为什么不使用
smart_str
?我必须自己做,并以
str
对象而不是unicode的形式提供错误消息,以使其正常工作

因此,我在渲染时发现TemplateSyntaxError UnicodeCodeError:“ascii”编解码器无法对位置17中的字符u'\xe5'进行编码:序号不在范围内(128)。这似乎说明呈现我的错误列表项(即
u'å'
)导致第一个unicode消息“ascii”编码解码器无法编码字符u'\xe5',然后在呈现第一个unicode消息时导致第二个unicode编码错误。我弄错了吗

Django版本:1.3.1(但这似乎也发生在1.4中)


完全回溯:

您可以使用insclusion标记或
{%include%}
手动呈现
非字段错误
(以及整个表单)。这不是直接的解决方案,但它解决了问题,而且更灵活。

谢谢!它可以与smart_str配合使用。我只是想知道为什么在这种情况下不能使用unicode。
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])) 
s = unicode(str(s), encoding, errors) 
def __str_cast(self):
    return str(self.__func(*self.__args, **self.__kw))