我在模板中显示变量时遇到问题。我有一个使用此__unicode__
方法的模型:
class MyClass(models.Model):
...
def __unicode__(self):
return 'Admisión para {student}'.format(student=self.student.__unicode__()) # Look at that accented char (ó)
在models.py文件的顶部,我有这两行:
# coding=utf-8
from __future__ import unicode_literals
我正在使用python 2.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'编解码器无法解码位置25中的字节0xc3:序数不在范围内(128)”,所以我认为,它提出了例外。
但最令人奇怪的是,当我将 unicode 方法改为这样时:
def __unicode__(self):
txt = self.student.__unicode__())
return 'Admisión para {student}'.format(student=txt)
{{obj}}显示为我预期......
有人可以告诉我,我的错误在哪里?它是一个python / django模板错误?或者什么?
提前谢谢!!!