model .__ unicode __ () возвращение русской строки вызывает TemplateSyntaxError - PullRequest
0 голосов
/ 25 февраля 2010

код:

class Gallery(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField(blank=True)
    created = models.DateField(auto_now_add=True)    
    class Meta:
        verbose_name = 'галерея'
        verbose_name_plural = 'галереи'
    def __unicode__(self):
        return 'Галерея %s' % self.title

ошибка:

TemplateSyntaxError at /admin/galleries/gallery/
Caught an exception while rendering: ('ascii', '\xd0\x93\xd0\xb0\xd0\xbb\xd0\xb5\xd1\x80\xd0\xb5\xd1\x8f ', 0, 1, 'ordinal not in range(128)')

что мне делать?

Ответы [ 3 ]

1 голос
/ 25 февраля 2010

Попробуйте

return u'Галерея %s' % self.title
0 голосов
/ 26 февраля 2011

, чтобы избежать подобных ошибок, поместите его в начало вашего файла

# -*- coding: utf-8 -*-
0 голосов
/ 25 февраля 2010

Поскольку self.title является строкой Unicode, а строковый литерал - нет (его тип - str), когда Python выполняет выражение 'Галерея %s' % self.title, он должен привести строковый литерал в Unicode перед выполнением интерполяции. Для этого требуется кодировка символов, и по умолчанию используется ASCII, который может кодировать менее 128 различных символов.

Чтобы избежать этой проблемы, используйте строковый литерал Unicode: u'Галерея %s'. Если вы сомневаетесь, ваши строки должны быть строками Unicode, особенно в Django.

...