模板語言自帶的一些處理函數:經過管道符來處理html
幫助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}} 轉換成日期時間型
{{ bio|truncatewords:"30" }} 只取前30個字符
{{ my_list|first|upper }} 將第一個字母大寫
{{ name|lower }} 全轉換小寫python
有時咱們需要自定義函數: django
@register
.simple_tag
session
a、在app中建立templatetags模塊app
b、建立任意 .py 文件,如:xx.pyide
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_tagspa
1
2
|
{
%
my_simple_time
1
2
3
%
}
{
%
my_input
'id_username'
'hide'
%
}
|
e、在settings中配置當前app,否則django沒法找到自定義的simple_tag code
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
htm
註冊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條件