filter
{{}}
1 变量
句点符,深度查询(可以点到方法,不要加括号,只能是无参的方法)
2 过滤器
<p>date过滤器 {{ now|date:'Y-m-d:H:i:s' }}</p>
<p>date过滤器 {{ now|date }}</p>
如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:
<p>default过滤器 {{ ss2|default:'字符串没有值' }}</p>
<p>default过滤器 {{ ll3|default:'列表没有值' }}</p>
返回值的长度。它对字符串和列表都起作用
<p>length过滤器 {{ ll2|length }}</p>
将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:
<p>filesizeformat过滤器 {{ file|filesizeformat }}</p>
<p>filesizeformat过滤器 {{ 1024|filesizeformat }}</p>
切片操作
<p>slice过滤器 {{ 'lqzisbig'|slice:'1:9' }}</p>
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾
<p>truncatechars过滤器 {{ 'lqzisbigdddddddeee'|truncatechars:9 }}</p>
<p>truncatewords过滤器: {{ 'lqz is big and egon is small'|truncatewords:3 }}</p>
<p>safe过滤器: {{ ss3|safe }}</p>
xss攻击:跨站脚本攻击
{#可以在视图函数里处理#}
from django.utils.safestring import mark_safe
ss3=mark_safe(ss3)
<p>safe过滤器: {{ ss3|safe }}</p>
俩参数可以传字符串和数字,具体详见源码
<p>add过滤器: {{ 12|add:"3" }}</p>
<p>add过滤器: {{ 'eee'|add:"3rrr" }}</p>
tag
{% %}
for :forloop
{%for i in ll%}
#必须再for循环里使用
{{forloop}}
#
{% empty%}}
{% endfor%}
if if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。
{%if 条件%}
{% endif%}
{% with aa=dic.name%}
{{aa}}
{%endwith%}
自定义过滤器
1 先去setting里面把app名字配置上
2 再app目录下创建一个templatetags模块
3 写py文件(my_test.py)
4 from django import template
5 register=template.Library()
6 写函数 addstr(用register.filter()装饰)
7 模板:
8 {% load my_test %}
9 {{'lqz'|addstr:'isbig' }} #最多只能传两个参数
自定义标签:
1 先去setting里面把app名字配置上
2 再app目录下创建一个templatetags模块
3 写py文件(my_test.py)
4 from django import template
5 register=template.Library()
6 写函数 [email protected]_tag(name='yy')装饰)
@register.simple_tag(name='yy')
def my_sum(x,y,z,i):
return x+y+z+i
7 模板:
8 {% load my_test %}
9 {% yy 12 34 56 78 %} #以空格做分割,传参数
自定义标签示例:
在app01下创建的templatetags文件夹,里面创建my_test.py文件,文件名可随意更改
from django import template # 必须用register这个名字,必须一模一样 register = template.Library() # 接下来开始自定义过滤器 @register.filter(name='abc') def aaa(x, y): return x + y # 自定义标签 @register.simple_tag(name='ABC') def my_sum(x, y, z, i): return x * y * z * i
在html文件中:
{% load my_test %} {{ 'lqz'|abc:'isbig' }} {% ABC 1 2 3 4 %} {% if 'lqz'|abc:'isbig' %} {% ABC 1 2 3 4 %} {% endif %} 自定义的过滤器,可以放在if判断里, 自定义的标签,不能放在if判断里条件里