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. mui openWindow方法详细说明

    mui.openWindow({ url: 'xxx.html', //String类型,要打开的界面的地址 id: 'id', //String类型,要打开的界面的id styles: { //We ...

  2. “都是为了生活”小组 选题 Scrum立会报告+燃尽图 01

    作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8683. 由于团队账号申请博客未通过网站审核,无法写博或加入班级,第一次立会 ...

  3. C字符贪吃蛇

    算法参照Perl字符贪吃蛇,源码: #include <stdio.h> #include <windows.h> #define WIDTH 12 // 宽 #define ...

  4. 范围指示器Extent Indicators

    范围指示器Extent Indicators 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com   商务合作,科技咨询,版权转让:向日葵,135- ...

  5. springboot配置Filter的两种方法

    一.使用注解1. 假设Filter类的路径为com.sanro.filter @Slf4j @WebFilter(filterName = "authFilter", urlPat ...

  6. k8s记录-使用kube-proxy让外部网络访问K8S service的ClusterIP (转载)

    配置方式 kubernetes版本大于或者等于1.2时,外部网络(即非K8S集群内的网络)访问cluster IP的办法是:修改master的/etc/kubernetes/proxy,把KUBE_P ...

  7. 【432】COMP9024,Exercise9

    eulerianCycle.c What determines whether a graph is Eulerian or not? Write a C program that reads a g ...

  8. laravel redis sentinel 和 redis cluster 配置

    laravel redis sentinel配置: 'redis' => [ 'cluster' => false, 'options' => [ 'replication' =&g ...

  9. 【Leetcode_easy】933. Number of Recent Calls

    problem 933. Number of Recent Calls 参考 1. Leetcode_easy_933. Number of Recent Calls; 完

  10. web端自动化——selenium Page Object设计模式

    Page Object设计模式的优点如下: ①    减少代码的重复. ②    提高测试用例的可读性. ③    提高测试用例的可维护性,特别是针对UI频繁变化的项目. 当为Web页面编写测试时,需 ...