Filters可以称为过滤器。下面我们简单介绍是如何使用他的。

  Filters的语法: {{ value|filter_name:参数 }}

  Django大概提供了六十个内置过滤器,下面我们简单介绍几个。

  首先,基本操作都知道,urls.py中:

 from app01 import views

 urlpatterns = [
path('demo/', views.demo),
]

  然后,views.py中:

 def demo(request):
pass

  pass需要我们自己替换。

  另外创建一个demo.html显示结果。

length

  返回值的长度,作用于字符串和列表。

 def demo(request):
name = '徐雪'
return render(request,
'demo.html',
{
'name':name
})

view.py

 <body>
{{ name }}-{{ name|length }}
</body>

demo.html

default

  如果一个变量是false或者为空,就是用默认值,否则使用变量的值。

 <body>
{{ bucunzai|default:'不存在' }}
</body>

demo.html

filesizeformat

  将值格式化为一个“人类可读”的文件尺寸

 def demo(request):
file_size = 123456789
return render(request,
'demo.html',
{
'file_size':file_size
})

views.py

 <body>
<p>
文件大小:
{{ file_size|filesizeformat }}
</p>
</body>

demo.html

切片

  

 def demo(request):
name_list = ['张三','李四','王五','王二麻子']
return render(request,
'demo.html',
{
'name_list':name_list
})

views.py

 <p>
切片前:
{{ name_list }}<br>
切片后:
{{ name_list|slice:'1:3' }}
</p>

demo.html

date

  时间格式化

 def demo(request):
from datetime import datetime
now = datetime.now()
return render(request,
'demo.html',
{
'now':now
})

views.py

 <p>
格式化之前:
{{ now }}<br>
时间格式化:
{{ now|date:'Y-m-d H:i:s' }}
</p>

demo.html

safe

  Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。

 def demo(request):
safe = "<a href='https://www.baidu.com'>safe标签</a>"
return render(request,
'demo.html',
{
'safe':safe
})

views.py

 {{ safe|safe }}

demo.html

  点击html上面的连接就会跳转。

truncatechars

  如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

 def demo(request):
text = '发的反对法士大夫打发士大夫大师傅大师傅士大夫地方都是发生的广泛的的废墟发生发射点'
return render(request,
'demo.html',
{
'text':text
})

views.py

 <p>
省略前:
{{ text }}<br>
省略后:
{{ text|truncatechars:20 }}
</p>

demo.html

自定义Filters

  首先在自己的app文件夹下面创建一个Python Package,命名为templatetags。然后在这个文件夹下面新建一个py文件,我命名为myfilters.py。到这里基本工作已完成。接下来编写自己的自定义filters。

 from django import template
register = template.Library() # 告诉django的模板语言我现在有一个自定义的filter语言,名字叫demo
@register.filter(name='demo')
def add_one(arg):
return '{} is good!'.format(arg)

myfilters.py

 {% load myfilters %}
<!--name是从views.py中传过来的变量,demo是myfilter.py中的filters方法-->
{{ name|demo }}

demo.html

  上面是传入一个值,两个值怎么办?

 from django import template
register = template.Library() # 告诉django的模板语言我现在有一个自定义的filter语言,名字叫more
@register.filter(name='more')
def add_more(arg,arg1):
'''
第一个参数永远是管道符前面的参数
:param arg:管道符前面的变量
:param arg1:冒号后面的变量
:return:
'''
return '{} is {}!'.format(arg,arg1)

myfilters.py

 {% load myfilters %}
<!--name是从views.py中传过来的变量,more是myfilter.py中的filters方法-->
{{ name|more:'美丽的。' }}

demo.html

Django模板语言中的Filters的使用方法的更多相关文章

  1. django模板语言中的extends,block和include

    extends和block一起用 它们用于母版和子版的继承 在母版html中将一些需要替换的部分用{% block xxx %}...{% endblock %}括起来, 在子版html中,在第一行需 ...

  2. C语言中的const,free使用方法具体解释

    注意:C语言中的const和C++中的const是有区别的,并且在使用VS编译測试的时候. 假设是C的话.请一定要建立一个后缀为C的文件.不要是CPP的文件. 由于.两个编译器会有区别的. 一.C语言 ...

  3. C语言中malloc函数的使用方法

    C语言中malloc是动态内存分配函数.函数原型:void *malloc(unsigned int num_bytes);参数:num_bytes 是无符号整型,用于表示分配的字节数.返回值:如果分 ...

  4. django模板中的extends和include使用方法

    一.extends使用方法 首先extends也就是继承,子类继承父类的一些特性.在django模板中通过继承可以减少重复代码. 首先我们建立一个app,名字叫做hello.别忘了在settings. ...

  5. Django 模板中 变量 过滤器 标签 的使用方法

    一.变量       1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量.    2.使用dot(.)能够访问变量的属性    3.当模板引擎碰到dot的 ...

  6. Linux-C语言中gettimeofday()函数的使用方法(转载)

    1.简介: 在C语言中可以使用函数gettimeofday()函数来得到时间.它的精度可以达到微妙 2.函数原型: #include<sys/time.h> int gettimeofda ...

  7. linux下C语言中的flock函数使用方法 .

    表头文件  #include<sys/file.h> 定义函数  int flock(int fd,int operation); 函数说明  flock()会依參数operation所指 ...

  8. C语言中Union类型的使用方法

    转自:http://blog.csdn.net/feimor/article/details/6858103 使用C语言时,常常使用struct,对于union类型却几乎没有用过,只知道它是联合类型, ...

  9. R语言中Fisher判别的使用方法

    最近编写了Fisher判别的相关代码时,需要与已有软件比照结果以确定自己代码的正确性,于是找到了安装方便且免费的R.这里把R中进行Fisher判别的方法记录下来. 1. 判别分析与Fisher判别 不 ...

随机推荐

  1. 详解Azure的权限控制

    注意:本文档仅限于Azure国际版,国内版略有不同   Azure中的角色分配相对来说是比较复杂的的,对于任何云组织来说,云的资源访问管理权限都是一项非常重要的功能,azure中的授权系统叫做基于角色 ...

  2. kill命令的简单实现

    kill命令的简单实现 目标:简单实现kill命令 功能: 向进程发送信号 列出信号名字 参数: -l 列出信号名字 -s (s=1.2.3.....)发送的信号代号 环境 ubuntu 14.04 ...

  3. Python中单引号和双引号的作用

    一.单引号和双引号 在Python中我们都知道单引号和双引号都可以用来表示一个字符串,比如 str1 = 'python' str2 = "python" str1和str2是没有 ...

  4. eQTL | Expression quantitative trait loci | 表达数量性状基因座 | QTL | 数量性状位点

    到底什么是eQTL? eQTL和QTL之间有什么联系?为什么说QTL比eQTL难很多? QTL和GWAS有什么关系? GTEx数据库里的eQTL数据如何利用? 说eQTL之前必须先解释QTL,QTL, ...

  5. JVM 初始化阶段例子 final常量

    1.创建FinalTest类,里面有一个final常量x class FinalTest{ public static final int x = 3; static { System.out.pri ...

  6. pt-table-checksum校验与pt-table-sync修复数据【转】

    1:下载工具包 登录网站下载相应的工具包 https://www.percona.com/downloads/percona-toolkit/LATEST/ 2:安装 (1)yum安装: sudo y ...

  7. win10安装Navicat 12 for MySQL

    Navicat 下载地址: https://blog.csdn.net/u013600314/article/details/80605981 Navicat 连接Mysql 的方法:https:// ...

  8. 【maven】如何将一个已有的jar文件,生成maven坐标,并上传至远程仓库

    [一]如何将一个已有的jar文件,生成maven坐标 使用maven构建项目需要在项目中引入自定义的一些包,也像maven一样在工程的pom.xml中引入相应的坐标,这时候我们就要自己把包上传到本地仓 ...

  9. python 设计模式之桥接模式 Bridge Pattern

    #写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是 ...

  10. SSIM (Structural SIMilarity) 结构相似性

    公式基于样本x和 y 之间的三个比较衡量:亮度 (luminance).对比度 (contrast) 和结构 (structure). 每次计算的时候都从图片上取一个 N*N的窗口,然后不断滑动窗口进 ...