0

我开始学习 Django,我从 Django 书开始。我遇到了这个概念,我很难理解逻辑..

书中说“Django 在整个框架中使用 Unicode 对象。模型对象被检索为 Unicode 对象,视图与 Unicode 数据交互,模板被呈现为 Unicode。通常,您不必担心确保您的编码是正确的;事情应该会奏效。”

那为什么需要做“def unicode ()”才能用unicode打印呢?它不应该只使用普通的 print() 吗?

4

2 回答 2

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
于 2013-09-24T23:18:15.313 回答
0

你读过https://docs.djangoproject.com/en/dev/ref/models/instances/#unicode吗?它解释了为什么我们需要很好的unicod。因为 python 2.x 基本不使用 unicode,所以 django 需要处理 unicode。

于 2013-09-24T23:10:45.807 回答