我开始学习Django,我开始学习Django书。 我遇到了这个概念,我很难理解逻辑......
这本书说 “Django在整个框架中使用Unicode对象。模型对象被检索为Unicode对象,视图与Unicode数据交互,模板呈现为Unicode。通常,您不必担心确保编码是正确的;事情应该只是工作。“
那为什么你需要用“def unicode ()”来打印unicode?不应该只使用普通香草印花()?
答案 0 :(得分:4)
您是否尝试过打印没有__unicode__
方法的模型实例?你没有得到任何真正有用的东西。这就是__unicode__
发挥作用的地方。无论何时尝试在unicode上下文中使用它们,都可以定义模型实例的显示方式。
试试这个实验。创建一个简单的模型。现在打印出来:
class MyModel(models.Model):
name = models.CharField(max_length=20)
>>> obj = MyModel("foo")
>>> print obj
看看你得到了什么。现在添加__unicode__()
方法。
class MyModel(models.Model):
name = models.CharField(max_length=20)
def __unicode__(self):
return self.name
再次运行:
>>> obj = MyModel("foo")
>>> print obj
答案 1 :(得分:0)
您是否阅读过https://docs.djangoproject.com/en/dev/ref/models/instances/#unicode?它解释了为什么我们需要 unicod 。因为python 2.x基本上不使用unicode,所以django需要处理unicode。