исключение __str__ вернуло не строковое (тип байтов) в django - PullRequest
1 голос
/ 16 октября 2019

Попытка выполнить следующие методы, где я получаю исключение, подобное исключение __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)

1 Ответ

1 голос
/ 16 октября 2019

Вы не уверены, что юникод против байтов и кодировка против декодирования.

Кодирование преобразует строку (юникод) в байты. Но метод __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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...