Django模板系统(上)
一、什么是Django的模板系统
1、Template System(模板系统)是Django中的一系列流程的控制,它来实现页面与代码分离(数据展示与功能逻辑的分离)的状态,达到松散模式。
2、Templates(模板)是一个简单的文本文件,可以生成任意文本格式的如html/xml/csv等。我们可以在之前创建的mysite目录中创建一个templates文件夹进行后面的处理。
3、模板系统背后的哲学:
业务逻辑和表现逻辑相对分开,所以就不能在django模板中直接调用Python代码。
二、模板使用的流程
创建模板对象--->模板渲染--->
1、创建模板对象
使用Template类直接实例化,其中Template类来自django.template模块中
>>> from django.template import Template >>> t=Template('My name is {{name}}') >>>print t ---------------------------output------------------------- <django.template.Template object at 0x0154541B4>
2、渲染模板
2.1:渲染操作流程
一旦创建Template对象之后,可以用context传递数据给它,它是一系列变量和它们值的集合,模板使用它来赋值模板变量标签和执行块标签
context在django里表现为Context类,在django.template模块中
Context类构造是一个可选参数:一个字典映射变量和它们的值
创建一系列Context对象之后,调用Template对象的render()方法并传递Context对象来填充模板
>>>from django,template import Template,Context >>>t=Template("My name is {{name}},I love{{language}}") >>>c=Context({'name':'BeginMan','language':'Python/Js/C#'}) >>>t.render(c) --------------------------------output---------------------------------------------- My name is BeginMan ,I love Python/Js/C#
2.2:同一模板,多个上下文(即:多个渲染)
>>>from django,template import Template,Context >>>t=Template("My name is {{name}},I love{{language}}") >>>c1=Context({'name':'BeginMan','language':'Python/Js/C#'}) >>>t.render(c) >>>c2=Context({'name':'Jack','language':'PHP'}) >>>t.render(c2) >>>c3=Context({'name':'Ben','language':'java'}) >>>t.render(c3)
改进:
>>>t=Template('My name is {{name}}') >>>for name in ('BeginMan','Jack','Ben'): .... print t.render(Context({'name':name}))
3.模板变量的灵活多变
模板系统能够处理复杂的数据结构,如list、dictionary和自定义对象等。在Django模板中遍历复杂的数据结构的关键是句点符合(.), 可访问字典的键值、索引、对象的方法、下面让看看在模板变量中句点符合应用
3.1:访问字典键值
3.2:访问对象的属性
3.4:调用对象的方法
注意:在Django的模板系统中,应用于模板变量时,方法的调用不能带圆括号,也无法给方法传参数,即:你只能调用不带圆括号的无参的方法
3.5:访问列表序列
注意:不允许使用负数列表索引
4、处理无效的变量
默认情况下,如果一个模板变量不存在,则模板系统会把他展示为空字符串
三、小结
本节所学的知识点:1.对Django模板的认识、2.掌握了如何模板的基本使用、3.模板变量技巧性基础掌握