python __unicode__这个的作用是什么啊?

看django操作数据库的时候 有写

def __unicode__(self)

这么写的作用是什么啊?

回答:

这个__str__的作用是美化打印出来的结果,使人类更方便查看。看下面例子,如果没有__st__方法,打印的结果是<__main__.Test object at 0x0000022D6D1387B8>格式,有了__str__方法后,打印时会按照__str__定义的格式来打印,打印结果为Name:xiaoming。

python">class Test:

def __init__(self, name, job):

self.name = name

self.job = job

def __str__(self):

return 'Name:' + self.name

instance = Test('xiaoming', 'Teacher')

print(instance)

在Django中,如果用的是Python3的话就只能用__str__方法,如果是Python2的话就使用__unicode__方法。因为更安全一些。看看文档图片描述

回答:

谢邀

其实楼上@InjetLee 说的基本很到位了,具体到Django中,在 Models中定义这个__unicode__(python3为__str__)方法与否,最直接的感受就是你访问admin所看到的内容是否友好。

下面,举个栗子:

class Question(models.Model):

question_text = models.CharField('question text', max_length=200)

pub_date = models.DateTimeField('date published')

class Meta:

verbose_name = 'question'

verbose_name_plural = verbose_name

ordering = ['-id']

def __str__(self):

return self.question_text

上面的models来自django官方教程,在上面的models中,我定义了一个名为Question的models,此时,访问django的后台admin,看到的内容是这样的

clipboard.png

可以发现,Question看到的内容就是我们上面返回的self.question_text(如果你返回的是其它数据,则看到结果的会不同),那么,如果此时将上述代码注释掉,也就是变成下面这样,会发生什么呢?

class Question(models.Model):

question_text = models.CharField('question text', max_length=200)

pub_date = models.DateTimeField('date published')

class Meta:

verbose_name = 'question'

verbose_name_plural = verbose_name

ordering = ['-id']

#

# def __str__(self):

# return self.question_text

此时,再去后台admin里面查看Question,则变成了这样:

clipboard.png

你定义的问题,看到的内容全部变为了Question object,这样的表示方式,对人来说,是相当的不友好的。

所以,以上,就是我所理解的__unicode__的作用,希望对你有所帮助。

回答:

看这个 https://docs.djangoproject.co...

简单的说是Python2你使用unicode(对象)的时候 django自动调用的方法

Python3 使用 __str__

来个官方例子

from django.db import models

class Place(models.Model):

name = models.CharField(max_length=50)

address = models.CharField(max_length=80)

def __str__(self): # __unicode__ on Python 2

return "%s the place" % self.name


还可以参考这个链接 https://docs.python.org/3.3/h...


因为Python是用c实现的, 但是他有一些魔法方法暴露出来给对象重载用

你可以参考这个链接 http://pyzh.readthedocs.io/en...

以上是 python __unicode__这个的作用是什么啊? 的全部内容, 来源链接: utcz.com/a/160169.html

回到顶部