模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符 .

模板标签(template tag) 。标签(tag)定义比较明确,即: 仅通知模板系统完成某些工作的标签。 

一:django自带过滤器

  

{{ name|lower }} 显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本为小写
{{ my_list|first|upper }}
{{ bio|truncatewords:"" }} 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的更多相关文章

  1. Django模板语言, 过滤器整理

    Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...

  2. Django模板系统-内置和自定义Filters

    django模板中最常用的两种特殊符号是 {{ }} 用来表示变量和 {% %} 用来表示逻辑相关的操作 变量 {{ 变量名 }} ,由字母数字下划线组成而.在模板语言中有特殊含义,用来获取对象相应的 ...

  3. django自定义simple_tag和filter

    1.自定义simple_tag: 1).在app目录名下创建templatetags目录,并新建__init__.py文件. 2).在templatetags目录下创建任意名字的py文件,例如rema ...

  4. django模板(过滤器)

    -------------------django内建的过滤器-------------------1.add 使用形式为:{{ value | add: "2"}} 意义:将va ...

  5. Django模板系统——过滤器

    转自:https://www.douban.com/note/145065606/  <省得每次都得去翻麻烦> 过滤器,变量的显示形式的改变一.形式:小写{{ name | lower } ...

  6. Django——模板系统过滤器

    过滤器,变量的显示形式的改变 一.形式:小写 {{ name | lower }} 二.串联:先转义文本到HTML,再转换每行到 <p> 标签 {{ my_text|escape|line ...

  7. django模板常用过滤器—add、cut、date

    语法格式:{{  obj | filter:para  }} add过滤器:将两个数相加或字符串.列表等进行拼接 views.py def add(request): context={'l1':[1 ...

  8. 自定义simple_tag和filter在html中渲染出来的联系和区别

    关于 simple_tag: 1,在app下创建一个(templatetags)目录,(被引用的模块必须放在该目录下,且目录名称不可更改): 2,创建任意py文件: 3,创建template对象: f ...

  9. 在html模板里面加python函数(simple_tag与filter)

    自定义函数 simple_tag a. app下创建templatetags目录 b. 任意xxoo.py文件 c. 创建template对象 register d. @register.simple ...

随机推荐

  1. vue 用checkbox 做多选,带选中样式

    <dl v-for="(item,index) in listData" :key="index"> testName <label> ...

  2. 计算机网络--HTTP协议

    TCP/IP协议 互联网构建的初衷是信息的共享.在信息的传递过程中,计算机不可避免的需要产生交流.就像我们与别人交谈需要懂得对方的语言才能明白对方表达的意思一样,计算机的交流也需要一个约束了,称之为协 ...

  3. WebSocket 快速开始

    [Html5客户端API] 1.创建websocket对象 var connection =  new WebSocket('ws[s]://www.example.com/chat',可选自己实现的 ...

  4. Debian Security Advisory(Debian安全报告) DSA-4406-1 waagent

    Package        : waagentCVE ID         : CVE-2019-0804 Francis McBratney发现Windows Azure Linux代理创建了具有 ...

  5. Debian Security Advisory(Debian安全报告) DSA-4405-1 openjpeg2

    package :openjpeg2 相关CVE ID: CVE-2017-17480 CVE-2018-5785 CVE-2018-6616 CVE-2018-14423 CVE-2018-1808 ...

  6. Java SE之正则表达式四:获取

    /** * * @author Zen Johnny * @date 2018年4月29日 下午4:51:08 * */ package demo.regex; import java.util.re ...

  7. cocos2d 图片模糊

    CCSprite texture setAliasTexParameters -->opengl 的功能 将图片柔化

  8. oracle.sql.TIMESTAMP转为java.sql.TIMESTAMP的方法

    /** * @reference oracle.sql.Datum.timestampValue(); * @return */ private Timestamp getOracleTimestam ...

  9. [ASP.net教程]IIS服务器 远程发布(Web Deploy)配置

    asp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的文件到服务器硬盘上.打包成安装程序到服务器上安装.通过Visual Studio 开发平台远程发布到服务器. 在asp.net网站的 ...

  10. 项目:《ssh框架综合项目开发视频》-视频目录和第六天的EasyUI简单讲解

    4 练习使用技术: Struts2 + hibernate5.x + spring4.x + mysql数据库 1 crm:customer relational manager,客户关系管理 2 c ...