Django第二天、模板

一:创建模板对象
创建一个Template对象最简单的方法就是直接实例化它,Template类就在django.template模块中,构造函数接受一个参数。

基本步骤:
1、转到project目录,输入命令python manage.py shell  启动交互对象
2、引入template模块,from django import template
 
python manage.py shell
from django import template   # 引入 template模块
t = template.Template('my name is {{ name }}')  # {{name}}  是模板变量

(当你创建一个Template对象,模板系统在内部编译这个内部格式,并做优化,做好渲染准备,但如果你的模板语法有错误,则在调用Template()时候则会抛出TemplatesyntaxError异常
    抛出异常的情形:
                    1.无效的tags
                    2.标签的参数无效
                    3.无效的过滤器
                    4.无效的模板语法
                    5.未封闭的块标签

二:模板渲染
在创建完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)   # 返回的不是一个python字符串,而是Unicode对象
u'My name is Stephane.'
Django模板系统的基本规则:写模板,创建Template对象,创建Context,调用render()方法
        

三:同一模板,多个上下文
一旦有了模板对象,你就可以通过它渲染多个context,例如
 
from django.template import Template,Context
t = Template('hello ,{ name }}')
print(t.render(Context({'name':'lzsss'})
>>> hello , lzssss
print(t.render(Context({'name':'zxxxxxx}))
>>> hello , zxxxxxx                 
我们可以使用统一模板源渲染多个context,只进行一次模板创建,然后多次调用render()方法进行更加高效的渲染

四:深度变量的查找
在Django模板中遍历复杂数据结构的关键是句点字符(.)
eg:假设你要向模板传递一个python字典,要通过字典的键访问该字典的值,可以使用一个据点
 
from django.template import Template,Context
person = {"name":'tom',"age":"33"}
t = Template('{{ x.name }} is {{ x.age }} years old.')
c = Context({'x':person})
t.render(c)
>>>'tom is 33 years old.'


forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。第一次执行循环时这个变量会被设置
为0。
forloop.revcounter 是表示循环中剩余项的整型变量。在循环初次执行时 forloop.revcounter 将被设置
为序列中项的总数。最后一次循环执行中,这个变量将被置1。
forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循环时,该变
量会被置为序列的项的个数减1。
forloop.first 是一个布尔值,如果该迭代是第一次执行,那么它被置为```` 在下面的情形中这个变量是
很有用的:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值