django模板
1 模版简介
DTL:django模板语言
核心:
变量 {{ }}
标签 {% %}
2 模版语法之变量
-变量渲染:{{变量}}
-变量深度查询:{{变量.索引/key值/方法}}
3 模版之过滤器
变量之过滤器(是个函数)
-语法:(后面只能传一个参数)
{{变量名|过滤器的名字:参数}}
-内置过滤器:
<p>{{ age|add:3 }}</p>
<p>{{ name|length }}</p>
<p>{{ bol|default:'123' }}</p>
<p>{{ ll2|default:'我是空的' }}</p>
<p>{{ file_size|filesizeformat }}</p>
<p>{{ ctime }}</p>
<p>{{ ctime|date:'Y年m月' }}</p>
<p>{{ name|slice:'2:4' }}</p>
<p>{{ name|truncatechars:6 }}</p>
<p>{{ name2|truncatewords:2}}</p>
<p>{{ href|safe }}</p>
4 模版之标签
语法:{% %}
-foo是一个可迭代对象 {% for a in foo %} {% endfor %} -forloop:counter,couter0,revcounter,revcouter0,first,last,parentloop:父循环的forloop对象 -for--empty的使用 {% for foo in ll2 %} {{ foo }} {% empty %} 没有值啊 {% endfor %} -if判断 {% if ll2 %} ll2 有值 {% elif ll %} ll有值 {% else %} ll2 没有值 {% endif %} -with重命名 {% with dic.hobby.1 as a %} {#{% with a=dic.hobby.1 %}#} {{ a }} <p>aaaa</p> {{ a }} {% endwith %}
5 自定义过滤器
1 确认app是否在settings中注册 2 在app下创建templatetags的模块(名字固定) 3 在模块下创建py文件(名字随意)--->在模板中{% load py文件名字%} 4 在py文件中写过滤器 from django.template import Library register = Library() #指定了name之后,模板上使用的时候,直接用name调用,如果没指定name,就用函数的名字 # 过滤器最多有两个参数 @register.filter(name='myadd') def my_add(a,b): print(a+b) return a+b 5 模板中使用 -1 {% load py文件名字%} -2 {{ 变量|myadd:1}}
6 自定义标签
1 确认app是否在settings中注册 2 在app下创建templatetags的模块(名字固定) 3 在模块下创建py文件(名字随意)--->在模板中{% load py文件名字%} 4 在py文件中写过滤器 from django.template import Library register = Library() #指定了name之后,模板上使用的时候,直接用name调用,如果没指定name,就用函数的名字 # 过滤器最多有两个参数 @register.simple_tag(name='mytag') def my_tag(a,b,c): return a+b+c 5 模板中使用 -1 {% load py文件名字%} -2 {% mytag 参数1 参数2 参数3%}
7 标签和过滤器的区别:
1 标签可以传多个参数,过滤器最多只能传2个
2 使用过滤器{{ }} 标签使用:{% %}
3 ****重点:过滤器可以放在if判断后,标签不能放在if判断后