模板语言自带的一些处理函数:通过管道符来处理
帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}} 转换成日期时间型
{{ bio|truncatewords:"30" }} 只取前30个字符
{{ my_list|first|upper }} 将第一个字母大写
{{ name|lower }} 全转换小写
有时我们须要自定义函数:
@register
.simple_tag
a、在app中创建templatetags模块
b、创建任意 .py 文件,如:xx.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/usr/bin/env python #coding:utf-8 from django import template from django.utils.safestring import mark_safe register = template.Library() @register .simple_tag def my_simple_time(v1,v2,v3): return v1 + v2 + v3 @register .simple_tag def my_input( id ,arg): result = "<input type='text' id='%s' class='%s' />" % ( id ,arg,) return mark_safe(result) |
c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名
1
|
{ % load xx % } |
d、使用simple_tag
1
2
|
{ % my_simple_time 1 2 3 % } { % my_input 'id_username' 'hide' % } |
e、在settings中配置当前app,不然django无法找到自定义的simple_tag
1
2
3
4
5
6
7
8
9
|
INSTALLED_APPS = ( 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'app01' , ) |
@register
.filter
注册filter跟tag步骤是一样的,只是把@register
.simple_tag换成
@register
.filter,然后调用时用管道符方式,变量|函数名:"参数"
比较:
simple_tag a. app下创建templatetags目录 b. 任意xxoo.py文件 c. 创建template对象 register d. @register.simple_tag def func(a1,a2,a3....) return "asdfasd" e. settings中注册APP f. 顶部 {% load xxoo %} g. {% 函数名 arg1 arg2 %} 缺点: 不能作为if条件 优点: 参数任意 filter a. app下创建templatetags目录 b. 任意xxoo.py文件 c. 创建template对象 register d. @register.filter def func(a1,a2) return "asdfasd" e. settings中注册APP f. 顶部 {% load xxoo %} g. {{ 参数1|函数名:"参数二,参数三" }} {{ 参数1|函数名:数字 }} 缺点: 最多两个参数,不能加空格,非要多个参数得写成一个字符串,自己切分 优点: 能作为if条件