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

模板标签(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. Newtonsoft.Json添加项

    JObject jo = (JObject)JsonConvert.DeserializeObject(result); ") { string domain=(jo["data& ...

  2. Gossip

    http://www.cnblogs.com/xingzc/p/6165084.html 敬请期待...

  3. 1.3 第一个python程序

    使用Pycharm编写第一个python程序 1.打开 Pycharm,选择 Create New Project,创建一个新项目 2.选择Pure Python表示创建一个纯Python程序项目,  ...

  4. luogu P4931 情侣?给我烧了!

    双倍经验 传送门 首先坐在一起的cp和不坐在一起的cp是相对独立的,可以分开考虑,然后方案数相乘 坐在一起的cp,方案为\(\binom{n}{k}*\binom{n}{k}*k!*2^k\).首先选 ...

  5. TensorFlow从入门到理解(六):可视化梯度下降

    运行代码: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.m ...

  6. Codeforces Round #540 (Div. 3)

    A链接 讨论一下2a2a2a跟bbb的大小关系即可. #include <set> #include <map> #include <queue> #include ...

  7. Jmeter 批量执行脚本之-----------Ant

    一.环境介绍&准备: 1)jmeter3.2版本,需配备jdk1.8(或其他jmeter版本): 2)ant下载,并配置环境变量: a.下载地址:http://ant.apache.org/b ...

  8. 算法-链的操作(一)-合并两个排序的链接(no.25)

    合并两个排序的链接(no.25) 把下面连个排好序的链,从小到大排序链接. list1 : 1 -> 6 -> 8 list2 : 2-> 5 -> 9 def merge(h ...

  9. Aizu - 2249 Road Construction

    题目:给出若干个建筑之间的一些路,每条路都有对应的长度和需要的花费,问在保证源点1到其他个点的距离最短的情况下,最少的花费是多少/ 思路:和一般的最短路问题相比,多了一个 数组id[i],用来记录到达 ...

  10. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...