“ 本文阅读时间为4分钟”
在学习Django的时候,会遇到一个问题,就是关于__str__和__unicode__方法的使用,运用该方法的作用是美化打印出来的结果,使人类更方便查看。
在上面的例子中,如果没有使用__str__方法则会输出格式,有了__str__方法后,打印时会按照__str__定义的格式来打印,打印结果为Name:xiaoming。
在Django的官方文档中有这么一段话
大意为__str__比__unicode__的使用更为安全,而且在python3中,只能使用__str__方法,如果是python2则使用__unicode__
具体到Django中,在 Models中定义这个(python3为)方法与否,最直接的感受就是你访问admin所看到的内容是否友好。
上面的models来自django官方教程,在上面的models中,我定义了一个名为Question的models,此时,访问django的后台admin,看到的内容是这样的
把__str__方法都注释掉,并重新启动服务器,就会发现有明显的变化
你定义的问题,看到的内容全部变为了,这样的表示方式,对人来说,是相当的不友好的。
总结
总的来说,Django会自动识别__str__和__unicode__方法,并会以自定义的显示方法在页面中进行显示
需要注意的一点是,在python3中只能使用__str__,如果使用了__unicode__方法是不会报任何错误的,而且在页面中也不会有任何效果
具体可以参考链接:
http://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html
https://docs.python.org/3.3/howto/pyporting.html#str-unicode
鱼卷少年
我来倾听你的烦恼
你来书写我的幽默
愿你筑梦远行
归来仍是少年
领取专属 10元无门槛券
私享最新 技术干货