1 2 模版之过滤器 2 -语法:{{第一个参数|过滤器名字:第二个参数}} 3 -常用过滤器:(详细用法见源码) 4 -length 5 -default 6 -slice 7 -date 8 -filesizeformat 9 -truncatechars 10 -truncatewords 11 -safe 12 -add 13 3 模版之标签 14 -{% 标签 %} 15 -for:forloop:对象(里面有好多东西:parentloop,last,first,counter....)忘记的话, 自己打印一下 16 empty:被循环的对象是空,才走它 17 for循环可以嵌套,也可以用if 18 -if: 19 {% if forloop.first %} 20 <p>第一次的我 </p> 21 {% elif forloop.last %} 22 <p>最后的我 </p> 23 {% else %} 24 <p>{{ foo }}</p>吧 25 {% endif %} 26 -with:重命名,应用在变量名过长 27 ********都要有结束******** 28 29 4 自定义标签和过滤器 30 --***标签不能用在if判断,过滤器,可以用在if判断 31 -自定义过滤器 32 -1 先app是不是已经在setting中注册 33 -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块) 34 -3 在模块下创建一个py文件,名字随意:mytag.py 35 -4 # 第一步,导入template 36 from django.template import Library 37 # 第二步,定义一个叫register的变量=template.Library() 38 register = Library() 39 -5 写一个函数,用@register.filter(name=‘yyy‘)装饰一下(可以指定别名) 40 def str_add(str1, str2): #一定要有返回值 41 # 业务逻辑很复杂 42 return str1 + str2 43 -6 在模板里:(新定定义的标签,过滤器,都要重启程序) 44 -{% load mytag %} 45 -{{‘lqz‘|str_add:‘nb‘}} 46 -自定义标签: 47 -1-4:前4步,根过滤器的定义完全一样 48 -5 只是装饰器不一样 49 @register.simple_tag() 50 def add_nb(value): 51 return value+‘nb‘ 52 -6 在模板里:(多个参数,以空格区分) 53 -{% load mytag %} 54 -{% add_nb ‘xqd‘%} 55
补充:inclusion_tag
-先注册app
-在app下创建一个templatetags的模块
-在模块下新建一个py文件
-from django.template import Library
-register=Library()------>名字必须叫register
-使用装饰器:@register.inclusion_tag(‘test.html‘)
-写个函数my_inclusion,返回字典
-模板里就能取到字典,渲染模板
-使用:
在模板中:{%load py文件名%}
{% my_inclusion 参数%}
原文地址:https://www.cnblogs.com/xuqidong/p/12099535.html
时间: 2024-10-29 04:35:11