18)django-模板的过滤器和tag,自定义simple_tag和filter
Posted 狼来的日子里!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18)django-模板的过滤器和tag,自定义simple_tag和filter相关的知识,希望对你有一定的参考价值。
模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符 .
模板标签(template tag) 。标签(tag)定义比较明确,即: 仅通知模板系统完成某些工作的标签。
一:django自带过滤器
{{ name|lower }} 显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本为小写
{{ my_list|first|upper }} {{ bio|truncatewords:"30" }} addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含javascript的文本时是非常有用的。 date : 按指定的格式字符串参数格式化 date 或者 datetime 对象, 范例: {{ pub_date|date:"F j, Y" }} length : 返回变量的长度。 对于列表,这个参数将返回列表元素的个数。 对于字符串,这个参数将返回字 符串中字符的个数。 你可以对列表或者字符串,或者任何知道怎么测定长度的Python 对象使用这个方法 (也就是说,有 __len__() 方法的对象)。
二:模板标签(template tag)
标签(tag):定义比较明确,即: 仅通知模板系统完成某些工作的标签 ,比如
for标签
if 标签
三:自定义simple_tag
如果django自带的过滤器和tag不满足需求,可以自己定义simple_tag和filter来使用
把ptyhon某些函数直接那到模板语言使用,就模板的simple_tag
建立步骤如下:
步骤1) 在某个app下面创建templatetags目录 步骤2)在templatetags下面创建任意xx.py文件 步骤3)创建template对象register, 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 步骤4)装饰自定义文件 步骤5)setings里面注册app 步骤6)在模板里顶部{% load xx%} 步骤7)使用{% 函数名 参数%} 优点:参数任意 缺点:不能做为if条件
四:自定义filter(过滤器)
模板自定义filter 步骤1) 在某个app下面创建templatetags目录 步骤2)在templatetags下面创建任意xx.py文件 步骤3)创建template对象register, from django import template from django.utils.safestring import mark_safe register = template.Library() @register.filter def hello(v1,v2): return v1 + v2 步骤4)装饰自定义文件 步骤5)setings里面注册app 步骤6)在模板里顶部{% load xx%} 步骤7)使用{{ 参数1|函数名:参数2}} 最多传递两个参数 {{ "word"|hello:"china" }} 最多传递两个参数,如果要传递多个参数,可以这样写 {{ 参数1|函数名:“参数2,参数2”}} 在函数里split切割 缺点:参数最多两个,不能加空格 优点:能作为if条件
五:示例
app01.templatetags
xx.py
# -*- coding:utf-8 -*- __author__ = \'shisanjun\' from django import template register=template.Library() @register.simple_tag def add(n,m): #自定义simple_tag,可以传递多个参数 return n+m @register.filter def hello(n,m): #自定义filter,只能传递两个参数 return n+m
模板调用
{% load xx %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>simple_tag演示</p> {% add 2 3 %} <p>filter演示,filter最多传递两个参数</p> {{ "word"|hello:"china" }} <p>simple_tag不能使用if判断,filter可以用于if判断测试条件</p> {%if "word"|hello:"china" %} {% endif %} </body> </html>
以上是关于18)django-模板的过滤器和tag,自定义simple_tag和filter的主要内容,如果未能解决你的问题,请参考以下文章
Django模板层 (变量分配 过滤器 标签 继承和导入 自定义过滤器标签及inclusion_tag(了解))