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

模板标签(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. 完全使用UDP登录Linux

    ===============Mosh 登录器========================================= == 针对TCP被某些防火墙阻断的Linux机器, 该程序可以让你不使 ...

  2. 9.selenium

    1.安装与入门 pip3 install selenium 将chromedriver放到一个没有权限要求的目录 from selenium import webdriver driverpath=& ...

  3. Docker 随 docker服务重启

     在创建时添加 重启 docker run --restart=always -d --name web -p : -v /data/web:/usr/local/tomcat/webapps tom ...

  4. 第25月第17天 django rest framwork authentication /tmp/mysql.sock

    1.authentication https://www.django-rest-framework.org/api-guide/authentication/#authentication 2.dj ...

  5. xtrabackup 在线主从搭建

    因为意外导致某个MySQL的从服务器宕机,且不可修复,因为是业务数据库,不能停机和锁表进行从库的搭建,所以考虑了使用xtrabackup 进行在线主从搭建. 一.数据库环境 注意:  主从搭建主库一定 ...

  6. KMP模板(HDU1711)

    #include<stdio.h> #include<math.h> #include<string.h> #include<stack> #inclu ...

  7. Kafka思维导图

  8. 页面跳转、底部tabs切换页面

    1.页面跳转 import { NavController } from 'ionic-angular'; constructor(public navCtrl: NavController) { } ...

  9. Javascript入门(一)弹出方框

    今天要javascript做一个用网页弹出框框的效果,虽然没什么卵用. 效果如图,弹出一个“hello world”的框框. 1. 新建一个html 页面, 如图: <!DOCTYPE html ...

  10. 新语法11. – LINQ

    LINQ分组: IEnumerable<IGrouping< group dog by dog.Age; 遍历分组: foreach (IGrouping<int, Dog> ...