一、模板标签
内置标签:
1、autoescape
控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效。该块以endautoescape结束标签关闭。
views:defindex(request):return render(request,'app02/index.html',{'title':'mypage','user':'
html:
{ { user }}#默认为不转义#}{ { user|safe }} #转义HTML标签#}
{% autoescape on %} #转义HTML标签后,按原样输出#}
转义:{ { user }}
{% endautoescape %}
{% autoescape off %}
不转义:{ { user }}
{% endautoescape %}outing:
转义:
dd
2、block
定义可以被子模板覆盖的块,为模板继承时使用
3、comment
注释一段代码,标签不能嵌套
4、cycle
多次循环迭代,给定的值,每次遇到此标签就会生成一个参数对应第一个,如此类推,如循环完没有参数了则继续从头开始循环。
#outing
one
two
three
four
one
two
three
可以使用多个模板变量,也可以使用变量加字符串的形式混合使用。
views:
def dome(request):
info = ['html','jques','dome']
row = {'one':'python','two':'javascript','three':'css'}
return render(request,'app02/dome.html',{'info':info,'row':row})
html:
#outing:
html
jques
dome
TOT
python
css
javascript
html
您可以在cycle标记中使用任意数量的值,以空格分隔。包含在单引号(')或双引号(")中的值被视为字符串文字,而不带引号的值则被视为模板变量。
如果使用关键字,silent,将在第二次调用是使用上一个值。
#outing
dd:1
2
2
3
TOT
5、debug
输出整个调试信息,包括当前上下文和导入的模块
6、extends
表示该模板扩展了父模板
这个标签有两种使用方式:
{% extends "base.html" %}(带引号)使用文字值 "base.html"作为父模板的名称来扩展。
{% extends variable %}使用的变量variable。如果变量的计算结果为字符串,Django将使用该字符串作为父模板的名称。如果变量评估为一个Template对象,Django将使用该对象作为父模板。
通常,模板名称是相对于模板加载程序的根目录,字符串参数也可以是./开头的相对路径。
7、filter
通过一个或多个过滤器过滤块的内容。可以使用管道指定多个过滤器,并且过滤器可以具有参数,就像变量语法一样。
8、firstof
输出不是第一个参数的变量为false,如果所有传递的变量都是false,则不输出
{% firstof var1 var2 var3 %}
相当于:
{% if var1 %}
{ { var1 }}
{% elif var2 %}
{ { var2 }}
{% elif var3 %}
{ { var3 }}
{% endif %}
如果所有传递的变量都是False,您还可以使用文字字符串作为回退值:
{% firstof var1 var2 var3 "fallback value" %}
您可以使用该语法将输出存储在变量中。{% firstof var1 var2 var3 asvalue %}
9、for
循环输出数组中的每个项目,使项目在上下文变量中可用。
循环列表的值:
可以使用reversed反向循环列表:
列表可以使用嵌套循环:
{% for y in x %}
{ { y }}{% endfor %}{% endfor %}
字典循环,可以使用items方法得到字典的建和值:
for循环再循环中设置的变量:
forloop.conter 循环的当前迭代索引从1开始计数
forloop.counter0 循环当前迭代的索引从0开始计数
forloop.revcounter 循环结束时的迭代次数(1索引)
forloop.revcounter0 循环结束时的迭代次数(0索引)
forloop.first 如果这是通过循环的第一次,则为真
forloop.last 如果这是通过循环的最后一次,则为真
forloop.parentloop 对于嵌套循环,这是围绕当前循环的循环
{% if forloop.first %}
{% else %}{% endif %}
{ { i }}{% endfor %}
{ { number }}
{% if not forloop.last %},
{% endif %}
{% endfor %}
for empty:如果给定的数组为空或无法找到,则for标签可以接受一个可选的子句,显示文本:{% empty %}
{ { number }}
{% empty %}
sorry ,no number in this li1. {% endfor %}10、if
判断标签计算一个变量,并且该变量是真,即存在,不为空,不是flase的数据块的内容被输出:{% if %}
#views:
def ifelse(request):
po = request.POST.get('number') #获取提交的数据
return render(request,'app02/ifelse.html',{'po':int(po)}) #传递给模板
#html:
{ { po }}
{% if po >= 90 %}