一.模版简介
DTL:django模版语言
核心:
变量 {{}}
标签 {% %}
二.模版语法之变量
变量渲染:{{变量}}
变量深度查询:{{变量.索引/key值/方法}}
三.模版之过滤器
变量之过滤器(是个函数)
语法:(后面只能传一个函数)
{{变量名|过滤器的名字:参数}}
内置过滤器:
<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>
四.模版之标签
语法:{% %}
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 %}
{{a}}
<p>aaaa</p>
{% endwith %}
五.自定义过滤器
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 }}
六.自定义标签
1.确认app是否在settings中注册
2.在app下创建templatetags的模块(名字固定)
3.在模块下创建py文件(名字随意)--->在模版中(% load py文件名字 %)
4.在py文件中写过滤器
from django.tamplate import Library
register = Library()
# 指定了name之后,模版上使用的时候,直接用name调用,如果没指定name,就用函数的名字
# 过滤器最多有两个参数
@register.simplr_tag(name='mytag')
def my_tag(a,b,c):
return a+b+c
5.模版中使用
1 {% load py文件名字 %}
2 {% mytag 参数1 参数2 参数3 %}
七. 标签和过滤器的区别:
1.标签和过滤器的区别:
2.使用过滤器{{}} 标签使用:{% %}
3.过滤器可以放在if判断后,标签不能放在if判断后