模板标签
1、前面那篇文章中介绍了使用context参数进行传参,使HTML页面拥有了一定的动态效果。同时也提到了DTL模板中不仅可以有HTML标签对,还可以可以有if判断、for循环等。if、for等语句(模板标签)在HTML模板中就是以一种特殊的标签对形式存在的
2、html的数据是静态的,动态内容由框架标签负责引进。Django在html页面嵌入标签,是以{% 代码块 %}的形式,而输出内容使用{ { 变量名称 }}的形式进行接收
3、模板中"{% %}"形式的代码是Django模板语言的函数语法,Django模板函数需要结束标签。如,{%for%}循环的结束标签是{%endfor%}
标签释义
1、模板标签的本质是函数,标签名一般即为函数名。主要作用是载入代码渲染模板或对传递过来的参数进行一定的逻辑判断或计算后返回
2、模板中"{% %}"形式的代码是Django模板语言的函数语法,Django模板函数需要结束标签。如,{%for%}循环的结束标签是{%endfor%}
3、在Web框架中,标签常分为内置标签和自定义标签,在内置标签不够用的时候,才会去自定义标签(说了句废话)。Django的内置标签不是很多,好好熟悉一番
常用的模板标签
if标签
1、if标签相当于Python中的if语句,是进行条件判断用的。同样也有elif和else相对应。只是说在模板语法中所有的标签都需要使用标签符号"{%%}"进行包裹
2、使用{%if%}、{%elif%}、{%else%}、{%endif%}进行条件判定,使用方法和Python中相同:{%if%}标签可以单独使用,可以有{%else%}、{%endif%}标签,也可以没有
⑴在模板语言中如果有{%if%}开始标签,那么就必须要有{%endif%}结束标签:因为在Python中语句的结束是用缩进来表示的,但是在模板语法中是没有缩进的,因此代码不知道你什么时候该结束if标签,因此使用了{%endif%}来表示if标签的结束
⑵另,在模板语法中不管是哪个标签,都是:只要有开始标签,就必须有结束标签(url标签除外,该标签没有结束标签)
3、if中可以使用:==、!=、<=、<、>=、>、in、not in、is、is not等判断运算符。另外还可以使用and、or等关键字来表示逻辑关系
例1:一般字典
⑴编辑视图
定义一个字典,并将其赋值给context参数
⑵编辑模板
1、在模板中使用if标签,对context传过来的值进行判断,根据判断来确定最终显示的数据
⑶访问
例1_1:嵌套字典
⑴编辑视图
⑵编辑模板
例1_2:值为列表
⑴编辑视图
⑵编辑模板:这里也可以使用people.索引数对列表中的元素进行取值
注:从上面例子可以看出
1、所有的标签都在"{% %}"之间
2、在获取参数值时,获取的方式跟我们前面那篇文章介绍的方法一致:可以直接使用键名,也可以使用'.'点操作符(只是这里不需要在使用{ { }}来包裹键名了)
3、总的来说,if标签对的语法为:
{% if 参数+条件 %}
满足if条件时执行的语句
{% elif 参数+条件 %}
满足elif条件时执行的语句
{% else %}
满足else条件时执行的语句
{% endif %}
for...in...标签
1、for...in...标签:类似于Python中的for...in...循环。可以遍历列表、元组、字符串、字典等一切可以遍历对象
2、使用{% for variable in variables %}...{% endfor%}来对字典、列表、字符串、元组等进行遍历
3、在遍历字典时需要使用item、keys、values的时候可以直接用点'.'的方式调用:执行方法的时候不能使用圆括号
4、另在for...