django中自定义simpletag,即使用自己定义的函数在html中处理数据。
步骤:
1、创建并注册app
settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mytag', ]
2、在此app下创建目录templatetags
3、在templatetags目录下创建任意py文件,在文件中创建template对象register
from django import template register = template.Library() @register.simple_tag def testtag(v1, v2): return v1 + v2
4.修改html
顶部添加{% load ttag %}
{% load ttag %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>tag</title> </head> <body> <span>{% testtag 4 7 %}</span> </body> </html>
效果:
自定义filter和tag类似
修改 @register.simple_tag 为 @register.filter
使用方式变为:{{ 'param1'|testfilter:'param2' }}
代码:
ttag.py
from django import template
register = template.Library()
@register.filter
def testfilter(v1, v2):
return v1 + v2
{% load ttag %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tag</title>
</head>
<body>
<span>{% testtag 4 7 %}</span>
<span>{{ 'Hello'|testfilter:'World!' }}</span>
</body>
</html>
效果:
两者对比:
simpletag不能作为if条件,而filter可以;
filter的参数必须放到字符串里而且不能加空格,而simpletag的参数以空格分割;