在模板中显示变量时遇到问题。我有一个使用__unicode__
方法的模型:
class MyClass(models.Model):
...
def __unicode__(self):
return 'Admisión para {student}'.format(student=self.student.__unicode__()) # Look at that accented char (ó)
在我的头顶上模型.py文件,我有两行:
^{pr2}$我使用的是python2.7.3
应该显示我想要的模板是这样的:(只有三个有趣的行)
<td>{{obj}}</td>
<td>{{obj.status}}</td>
<td>{{obj.stage.datetime|date:"SHORT_DATE_FORMAT"}}</td>
obj是“MyClass”类型的对象。第二行和第三行显示了预期的内容,但是第一行没有显示任何内容。我知道当一个人这样做({obj}})时,调用的方法是“unicode”,所以我尝试了很多方法:
我在控制台中尝试类似的方法:print obj
。我没有任何问题。正如我所料。在
我怀疑unicode方法引发了一个异常。所以我把方法改成这样:
def __unicode__(self):
try:
txt = 'Admisión para {student}'.format(student=self.student.__unicode__())
except Exception, e:
txt = unicode(e)
return txt
在该更改之后,当模板呈现时,{obj}}显示为“'ascii'codec cannot decode byte 0xc3 in position 25:ordinal not in range(128)”,因此正如我所想的,它引发了一个异常。在
但最奇怪的是,当我将unicode方法改为如下所示:
def __unicode__(self):
txt = self.student.__unicode__())
return 'Admisión para {student}'.format(student=txt)
{{obj}}如我所料显示。。。在
有人能告诉我我的错误在哪里吗?是python/django模板错误吗?或者什么?在
提前谢谢你!!!在
目前没有回答
相关问题 更多 >
编程相关推荐