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. various system release [online]

    1. 金丝雀发布 Canary 简单的金丝雀测试一般通过手工测试验证,复杂的金丝雀测试需要比较完善的监控基础设施配合,通过监控指标反馈,观察金丝雀的健康状况,作为后续发布或回退的依据. 金丝雀发布,一 ...

  2. [Vue warn]: Avoid using non-primitive value as key

    <el-select v-model="addform.province" placeholder="请选择省份" multiple>        ...

  3. 数据缺失值的处理 | R包 - mice

    有些情况下缺失值会零星的分布在数据当中,这时去掉所有包含缺失值的样本就不行了,直接用0去填补缺失值也不行. 所以此时就应该用拟合的方法来填补缺失值. library(mice) init = mice ...

  4. (基因功能 & 基因表达调控)研究方案

    做了好久的RNA-seq分析,基因表达也在口头溜了几年了,但似乎老是浮在表面. 对一件事的了解程度决定了你的思维深度,只想做技工就不用想太多,想做大师就一定要刨根问底. 老是说基因表达,那么什么是基因 ...

  5. 部署gerrit环境完整记录【转】

    开发同事提议在线上部署一套gerrit代码审核环境,废话不多说,部署gerrit的操作记录如下:提前安装好java环境,mysql环境,nginx环境测试系统:centos6.5下载下面三个包,放到/ ...

  6. CMU Database Systems - Embedded Database Logic

    正常应用和数据库交互的过程是这样的, 其实我们也可以把部分应用逻辑放到DB端去执行,来提升效率 User-defined Function Stored Procedures Triggers Cha ...

  7. oracle 删除某个用户下的所有对象

    先存放好dropobj.sql 文件 然后登录需要删除的用户 删除前最好备份一下:(备份是在cmd中进行的) C:\Users\panfu>exp file=d:\expall.dmp log= ...

  8. 小D课堂 - 零基础入门SpringBoot2.X到实战_第6节 SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener_24、深入SpringBoot过滤器和Servlet配置过滤器

    笔记 1.深入SpringBoot2.x过滤器Filter和使用Servlet3.0配置自定义Filter实战(核心知识)     简介:讲解SpringBoot里面Filter讲解和使用Servle ...

  9. leetcode 384. Shuffle an Array

    384. Shuffle an Array c++ random函数:https://www.jb51.net/article/124108.htm rand()不需要参数,它会返回一个从0到最大随机 ...

  10. Python写入csv文件示例

    import csv header = ['City', 'AQI', 'PM2.5/1h', 'PM10/1h', 'CO/1h', 'NO2/1h', 'O3/1h', 'O3/8h', 'SO2 ...