全部博文(2065)
分类: Python/Ruby
2009-05-11 17:01:19
Dear {{ person_name }},
{用两个大括号括起来的文字(例如 {{ person_name }} )是 变量(variable) }Thanks for placing an order from {{ company }}. It's scheduled to
ship on {{ ship_date|date:"F j, Y" }}.
Here are the items you've ordered:
Your warranty information will be included in the packaging.
Sincerely,
{{ company }}
被大括号和百分号包围的文本(例如 {% if ordered_warranty %} )是 模板标签(template
tag) 。标签(tag)定义比较明确,即:仅通知模板系统完成某些工作的标签。
借鉴下JAVA中的模板标签进来!
如何使用模板系统?
想要在Python代码中使用模板系统,只需遵循下面两个步骤:
1. 可以用原始的模板代码字符串创建一个 Template 对象, Django同样支持用指定模板文件路径的方式创建来 Template 对象;
2. 调用 Template 对象的 render() 方法并提供给他变量(i.e., 内容). 它将返回一个完整的模板字符串内容,包含了所有标签块与变量解析后的内容.
python manage.py shell 命令可以在命令行进行调试Django的哦
模板渲染
一旦你创建一个 Template 对象,你可以用 context 来传递数据给它。 一个context是一系列变量和它们值的集合。模板使用它来赋值模板变量标签和 执行块标签。context在Django里表现为 Context 类,在 django.template 模块里。 它构造是有一个可选参数:一个字典映射变量和它们的值。调用 Template 对象 的 render() 方法并传递context来填充模板:
{现在有了模板对象了。需要进行模板渲染了。}
>>>
from django.template import Context, Template
>>>
t = Template("My name is {{ name }}.") #得到模板对象
>>>
c = Context({"name": "Stephane"}) #渲染模板
>>>
t.render(c) #应用于我们的模板!
'My
name is Stephane.'
字典和Contexts
Python的字典数据类型就是关键字和它们值的一个映射。 Context 和字典很类似, Conetxt 还提供更多的功能,请看第十章。
{当我们的模板中有多个变量与标签的时候这个时候就要用到Context字典类型了}
c = Context({'person_name': 'John Smith',
... 'product': 'Super Lawn
Mower',
... 'company': 'Outdoor
Equipment',
... 'ship_date': datetime.date(2009, 4,
2),
... 'ordered_warranty':
True})
定义多个模板元素然后一一进行赋值处理!
这就是使用Django模板系统的基本规则:写模板,创建 Template 对象,创建 Context , 调用 render() 方法。
看看这样写模板渲染哦!
>>>
from django.template import Template, Context
>>>
person = {'name': 'Sally', 'age': '43'}
>>>
t = Template('{{ person.name.upper }} is {{ person.age }} years
old.')
>>>
c = Context({'person': person})
>>>
t.render(c)
'SALLY
is 43 years old.'
可以定义好一个字典类型的变量person然后在后面直接调用字典中的某个属性出来的。然后当要做渲染的时候就直接应用这个字典类型的变量进来就OK了!类似地也可以自定义一个类哦。然后在模板渲染的时候就可以直接调用其中的属性出来了。
如何处理无效变量?
当我们在写变量名如果是无效的话如何处理呢?
>>>
from django.template import Template, Context
>>>
t = Template('Your name is {{ name }}.')
>>>
t.render(Context())
'Your
name is .'
>>>
t.render(Context({'var': 'hello'})) #无效的变量名
'Your
name is .' #空值出来
玩一玩上下文(context)对象
多数时间,你可以通过传递一个完全填充(full populated)的字典给 Context() 来初始化 上下文(Context) 。 但是初始化以后,你也可以从``上下文(Context)`` 对象添加或者删除条目,使用标准的Python字典语法(syntax):
c = Context({"foo": "bar"})
c['foo'] #字典类型可以取KEY得到VALUES
'bar'
>>>
del c['foo'] #删除掉KEY值