我是django的新手。所以当我在shell中练习django模板时,我看到了两个不同的“render()”输出。所以这就是它。
from django.template import Template,Context
t = Template("My name is {{name}}.")
c = Context("name":"sraban")
t.render(c)
所以当我点击进入shell时显示
u'My name is sraban'
但我写的时候
from django.template import Template,Context
t = Template("My name is {{name}}.")
c = Context("name":"sraban")
print t.render(c)
它的输出是
My name is sraban
所以我想知道第一个输出中的额外“u”是什么,为什么两个输出变化? 我在python 2.7.3中使用django1.6。
答案 0 :(得分:0)
u
表示字符串是unicode字符串。这称为string prefix
。它在第一个示例中出现的原因是,在交互式shell中表示值的默认方式是使用函数repr
在使用该值作为参数调用时返回的值。第二个示例是缺少前缀,因为print
没有使用repr
- 表示字符串,但是它们的实际值。
答案 1 :(得分:0)
补充kroolik回答:
如果你仔细观察,你会注意到u
不是唯一的区别,在第二个输出中没有'
个字符。
差异与使用两个不同的功能有关:repr
和str
- 正如kroolik指出的那样 - 你可以在这里阅读它们:Input and Output
取自Python Doc。
str()函数用于返回值的表示,这些表示具有人类可读性,而 repr()表示生成可由解释器读取的表示(如果没有等效语法,则会强制执行SyntaxError)。对于没有特定人类消费表示的对象,str()将返回与repr()相同的值。
那么,这就是为什么你看到'u'
解释器需要知道一个字符串是否是unicode的原因,以及它是这样做的。
此时,您必须明白功能:Template.render
使用repr()
功能而print
没有。