Django自定义模板函数
1.模板语言的帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}} #转换日期
{{ bio|truncatewords:"30" }} #字符串切片
{{ my_list|first|upper }} #第一位 转换为大写
{{ name|lower }} #转换为小写
通过封装python的方法来实现其功能
示例:
views.py:
def simpletag(request): name='AKHFDAO' return render(request,'simpletag.html',{'name':name})
html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>{{ name }}</p> <p>{{ name|lower }}</p> </body> </html>
2.自定义simple_tag的步骤:
一:定义simple_tag:
(1)在app目录里创建templatetags目录(名字唯一)
(2)在templatetags下创建任意py文件(xx.py)
(3)创建templa对象 register
(4)编写函数
from django import template
register=template.Library() #对象名必须为register
@register.simple_tag()
def funcname(a1,a2):
return a1+a2
二:使用simple_tag:
(1)settings.py文件里注册app
INSTALLED_APPS
找到此列表,添加app名
(2)在HTML文件的顶部load你的py文件(上面步骤2)
(3)调用,使用{% 函数名 arg1 arg2 %}
{% load xx %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body>
<p>{% funcname "succ" "ess1" %}</p>
</body> </html>
3.自定义filter的步骤:
在上面的配置基础上:
@register.filter()
def funcname2(a1,a2): #最多只能有两个参数
return a1+a2
HTML:
{{ arg1|函数名:"arg2,arg3" }} {{ arg1|函数名:数字 }}
{% load xx %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>{{ 'succ'|funcname2:'ess2' }}</p> </body> </html>