Django 异常\uuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
尝试执行以下方法,其中我得到异常,如exception\uuuu str\uuuuuuuu返回的非字符串(类型字节)。Django 异常\uuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,django,python-3.x,Django,Python 3.x,尝试执行以下方法,其中我得到异常,如exception\uuuu str\uuuuuuuu返回的非字符串(类型字节)。 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(
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)
您对unicode与字节、编码与解码感到困惑 编码将(unicode)字符串转换为字节。但是
\uuu str\uu
方法必须返回字符串,而不是字节。没有必要在那里编码
def __str__(self):
return unicode(self)
然而,我甚至不知道这是如何工作的,因为Python3没有定义unicode
内置,也不识别\uuuuuUnicode\uuuu
方法。您应该直接在中执行此操作:
def __str__(self):
return "{}{:02d}:{:02d}:{:05.2f}".format(
'-' if self.sign == -1 else '', self._deghour, self.minute, self.second)
在实现\uuuu str\uuuu
魔术方法时,必须返回一个字符串(因此会出现错误,因为您返回的是utf-8编码的字符串)。因此,如果您想以这种方式重载它,您需要执行类似于返回str(unicode(self).encode('utf-8'))