首页 > 解决方案 > 异常 __str__ 在 Django 中返回非字符串(字节类型)

问题描述

尝试执行以下方法,其中我得到异常,如异常 __str__ 返回非字符串(类型字节)。

def __unicode__(self):
    return u"{}{:02d}:{:02d}:{:05.2f}".format(
        '-' if self.sign == -1 else '', self._deghour, self.minute, self.second)

def __str__(self):
    return unicode(self).encode('utf-8')

def __repr__(self):
    return u"RADecBase('{0}')".format(self)

标签: djangopython-3.x

解决方案


您对 unicode 与字节以及编码与解码感到困惑。

编码将(unicode)字符串转换为字节。但是该__str__方法必须返回一个字符串,而不是字节。不需要在那里编码。

def __str__(self):
    return unicode(self)

但是我什至不知道这是如何工作的,因为 Python 3 没有定义unicode内置函数并且无法识别该__unicode__方法。你应该直接在__str__

def __str__(self):
    return "{}{:02d}:{:02d}:{:05.2f}".format(
        '-' if self.sign == -1 else '', self._deghour, self.minute, self.second)

推荐阅读