我开始学习 Django,我从 Django 书开始。我遇到了这个概念,我很难理解逻辑..
书中说“Django 在整个框架中使用 Unicode 对象。模型对象被检索为 Unicode 对象,视图与 Unicode 数据交互,模板被呈现为 Unicode。通常,您不必担心确保您的编码是正确的;事情应该会奏效。”
那为什么需要做“def unicode ()”才能用unicode打印呢?它不应该只使用普通的 print() 吗?
您是否尝试过仅打印没有__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
你读过https://docs.djangoproject.com/en/dev/ref/models/instances/#unicode吗?它解释了为什么我们需要很好的unicod。因为 python 2.x 基本不使用 unicode,所以 django 需要处理 unicode。