代码:
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)')
我该怎么办?
答案 0 :(得分:1)
尝试
return u'Галерея %s' % self.title
答案 1 :(得分:0)
因为self.title是一个unicode字符串而你的字符串文字不是(它的类型是str),所以当Python执行表达式'Галерея %s' % self.title
时,它需要在执行插值之前将字符串文字强制转换为unicode。它需要一个字符编码来执行此操作,默认情况下会转换为ASCII,它可以编码少于128个不同的字符。
要避免此问题,请使用unicode字符串文字:u'Галерея %s'
。如果有疑问,你的字符串应该是unicode字符串,尤其是在Django中。
答案 2 :(得分:0)
为了避免这样的错误,请将其放在文件的开头
# -*- coding: utf-8 -*-