Python Django中的上下文呈现

Python Django中的上下文呈现,python,django,django-templates,render,Python,Django,Django Templates,Render,我是django新手。所以当我在shell中练习django模板时,我看到了“render()”的两个不同输出 from django.template import Template,Context t = Template("My name is {{name}}.") c = Context("name":"sraban") t.render(c) 所以当我在shell中按enter键时,它显示 u'My name is sraban' 但是当我写的时候 from django.tem

我是django新手。所以当我在shell中练习django模板时,我看到了“render()”的两个不同输出

from django.template import Template,Context
t = Template("My name is {{name}}.")
c = Context("name":"sraban")
t.render(c)
所以当我在shell中按enter键时,它显示

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”是什么,为什么两个输出不同???
我在Python2.7.3中使用django1.6。

u表示字符串是unicode字符串。这被称为一个。它出现在第一个示例中的原因是,在交互式shell中表示值的默认方式是使用函数
repr
以该值作为参数调用时返回的值。第二个示例缺少前缀,因为
print
不使用字符串的
repr
-表示,而是使用字符串的实际值。

补充kroolik答案:

如果仔细观察,您会注意到
u
不是唯一的区别,在第二个输出中没有
'
字符

不同之处在于使用了两种不同的函数:
repr
str
——正如kroolik所指出的——您可以在这里了解它们:

取自Python文档

str()函数用于返回人类可读的值的表示形式,而repr()用于生成可由解释器读取的表示形式(如果没有等效语法,则会强制生成语法错误)。对于没有用于人类消费的特定表示形式的对象,str()将返回与repr()相同的值

因此,这就是为什么您会看到
'u'
解释器需要知道字符串是否为unicode,这就是它的工作方式

此时,您必须清楚函数:
Template.render
使用
repr()
函数,而
print
不使用该函数