Django入门(六):模板标签-常见过滤器

接着上一节,模板标签中还有一个对象是:过滤器

1.过滤器介绍

主要用在模板文件(如 html 文件)中。

模板语法:

{{ 变量名 | 过滤器:可选参数 }}   

特点:双括号,使用过滤器的格式就是这个竖线又叫管道,过滤器的参数用冒号隔开,模板过滤器可以在变量被显示前修改它,过滤器使用管道字符(|)

2.简单过滤器

{{ name|lower }}

解释: {{ name }} 变量被过滤器 lower 处理后,大写转换为小写。lower就是一个过滤器函数

代码举例:

1. 首先通过地址访问路由文件urls.py,  其代码如下:(与上一小节变量是一样的)

路径映射的对象为views里面的mydef()函数

from django.urls import path

from . import views

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

 2. 再看views.py,mydef()函数返回的是一个mytemp.html网页,里面含一些变量,这个变量叫name,他的是值是views_name,这里注意views_name的值里面有大写,在被网页最终显示前,是可以修改的。

from django.shortcuts import render

def mydef(request):
    views_name="DEMO简单示例1"
    return render(request,"mytemp.html",{"name":views_name})

3.再看mytemp.html中,对name对象增加一个过滤器lower,如下图:

   <h1>{{name|lower}}</h1>

 最终应该显示为如下图的小写:成功!

 3.多管道过滤器

过滤管道可以被套接 ,也就是说 一个过滤器管道的输出又可以作为下一个管道的输入:

{{ my_list|first|lower }}

解释:首先取第一个元素(或第一个字符),然后再转化为小写。

代码举例:

 1. 首先通过地址访问路由文件urls.py,  其代码如下:(与上一小节变量是一样的)

路径映射的对象为views里面的mydef()函数

from django.urls import path

from . import views

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

 2. 再看views.py,mydef()函数返回的是一个mytemp.html网页,里面含一些变量,这个变量叫name,他的是值是views_name,这里注意views_name的值里面有大写,在被网页最终显示前,是可以修改的。

from django.shortcuts import render

def mydef(request):
    views_name="DEMO简单示例1"
    return render(request,"mytemp.html",{"name":views_name})

3.再看mytemp.html中,对name对象增加两个过滤器first lower,如下图:

    <h1>{{name|first|lower}}</h1>

 最终应该显示为如下图的:成功!

  4.带参数的过滤器

有些过滤器有参数.

过滤器的参数在冒号之后,并且总是以双引号包含。 例如:

{{ name|truncatewords:"4" }}

解释:显示变量 name的前4个单词。     truncatewords用法:取这个模板变量的前 N 个单词,不可用于中文。如果要用于中文,请用模板过滤器truncatechars,取这个模板变量的前 N 个字符。

1. urls.py文件不变,参考上面,省略

2. 再看views.py,views_name改为英文,因为truncatewords过滤器只能用于英文,且识别的是单词,而不是字符。

from django.shortcuts import render

def mydef(request):
   views_name="DEMO simple the first"
    return render(request,"mytemp.html",{"name":views_name})

3.再看mytemp.html中,过滤器显示前2个单词,如下图:

<h1>{{name|truncatewords:2}}</h1>

 最终应该显示为如下图的:成功!

 5.default

default 为变量提供一个默认值。格式如下:

{{ name|default:"简单示例01" }}

冒号后面跟着的是默认值

如果 views 传的变量的布尔值是 false,则使用指定的默认值。

有哪些值为 false呢?如下的值都是false, 

0  0.0  False  0j  ""  []  ()  set()  {}  None

1. 将views.py文件中views_name=0 

from django.shortcuts import render

def mydef(request):
   views_name=0
    return render(request,"mytemp.html",{"name":views_name})

2.  再看mytemp.html中,过滤器显示前2个单词,如下图:

  <h1>{{name|default:"简单示例01"}}</h1>

3. 最终显示如下图:成功!

  6.length

返回对象的长度,适用于字符串和列表。字典返回的是键值对的数量,集合返回的是去重后的长度。格式如下:

{{ name|length }}

因为比较简单,这里不再列出代码了,大家可以自行尝试。

 7.filesizeformat 

以更易读的方式显示文件的大小(即'13 KB', '4.1 MB', '102 bytes'等)。格式如下:

{{ name|filesizeformat}}

1. 举例来说,将views.py文件中views_name=1024

from django.shortcuts import render

def mydef(request):
   views_name=1024
    return render(request,"mytemp.html",{"name":views_name})

 2.  再看mytemp.html中,过滤器显示前2个单词,如下图:

  <h1>{{name|filesizeformat}}</h1>

3.最后显示为:1kB

8.date 

格式化时间输出,格式如下;

{{ time|date:"Y-m-d H:i:s" }} 或者 {{value | time}}

其中 Y-m-d H:i:s返回 年-月-日 小时:分钟:秒 的格式时间。如果time后面没有格式化参数,那么输出按照TIME_FORMAT中设置的进行。

1. 举例来说,将views.py文件中导入datetime模块:

from django.shortcuts import render

def mydef(request):
    import datetime
    now=datetime.datetime.now()
    return render(request,"mytemp.html",{"time":now})

 2.  再看mytemp.html中,使用date过滤器,如下图:

<h1>{{time|date}}</h1>

3. 看结果:

4. 如果mytemp.html中,date过滤器写成如下带参数的格式:

<h1>{{time|date:"Y-m-d H:i"}}</h1>

5.结果如下图: 

 

  9.safe

将字符串标记为安全,不需要转义。要保证 views.py 传过来的数据绝对安全,才能用 safe。和后端 views.py 的 mark_safe 效果相同。

Django 会自动对 views.py 传到HTML文件中的标签语法进行转义,令其语义失效。加 safe 过滤器是告诉 Django 该数据是安全的,不必对其进行转义,可以让该数据语义生效。

使用形式:{{value | safe}}

 1. 举例来说,将views.py文件中导入datetime模块:

from django.shortcuts import render

def mydef(request):
       views_str = "<a href='https://blog.csdn.net/weixin_42888180?spm=1000.2115.3001.5343/'>点击跳转</a>"
       return render(request, "mytemp.html", {"views_str": views_str})

 2.  再看mytemp.html中,使用safe过滤器,如下图:

    <h1>{{views_str|safe}}</h1>

3. 看结果:

4.然后超链接点进去:会自然跳转到相关网站

5. 假如说没有这个safe过滤器,会显示如下:

 10.其他过滤器汇总介绍

见如下链接:

Django模板过滤器汇总-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DOT Manager

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值