Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

前言
  • 基本环境
    • Django版本:1.11.8
    • Python版本:3.6
    • OS: win10 x64
  • 本文摘要
内置过滤器

注意:所有带参数的过滤器,在使用时,冒号:和参数中间不能有空格。

add加

  • 功能:

    把add后的参数num加给value;

    数字相加会进行算术相加;

    字符串会被拼接。

  • 语法:

    {{ value|add:"num" }}

  • 示例效果:

    1、数字相加

    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

    2、字符串相加

    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

join连接

  • 功能:

    以指定字符串str连接列表list中的元素,与python中的str.join(list)相似;
  • 语法

    {{ value|join }}
  • 示例效果:

    使用"// "连接列表,

    {{ value|join:" // " }}

    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

addslashes在引号前加斜杠

  • 功能:

    在引号前面加上斜杆。例如,用于在CSV中转义字符串。
  • 语法:

    {{ value|addslashes }}

    如果value是"I'm using?Django",输出将变成"I'm using Django".
  • 示例效果:

    地址栏中的 %20表示空格;

    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

capfirst首字母大写

  • 功能:

    大写变量的第一个字母。如果第一个字符不是字母,则该过滤器不会生效。
  • 语法:

    {{ value | capfirst }}
  • 示例效果:

    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

title首字母大写

  • 功能:

    大写字符串中单词的第一个字母。如果第一个字符不是字母,则该过滤器不会生效。
  • 语法:

    {{ value | title}}
  • 示例效果:

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

当单词“1good”并不是以字母开头时,title过滤器失效。

  • 拓展:
    • upper大写过滤器,将所有字母都大写, {{ value | upper}}
    • lower大写过滤器,将所有字母都小写, {{ value | lower}}

cut切割指定字符

  • 功能:

    移除value中所有的与给出的变量相同的字符。
  • 语法:

    {{ value|cut:"str" }};str为指定移除字符。
  • 示例效果:

    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

length求字符串或列表长度

  • 功能:

    返回字符串或列表长度;

  • 语法:

    {{ value|length}}

  • 示例效果:

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

  • 拓展:
    • length_is,若value的长度与width相等,则返回True;否则,返回False。

      {{ value|length_is:"width" }}

linenumbers换行加行号

  • 功能:

    当文本为多行时,为每行添加行号。返回的文本可能是一行,可以同时使用linebreaksbr换行。
  • 语法:

    {{ value|linenumbers }}
  • 示例效果:

    这里使用value='a \n b \n c',为了防止浏览器解析为一行,这里使用linebreaksbr过滤器进行换行。

    {{ value|linenumbers|linebreaksbr }}
  • 拓展:
    • linebreaksbr是一个换行过滤器,语法为:{{ value|linebreaksbr }},它替换字符串中所有的“\n”为“
      ”;
    • 例如, 。
    • linebreak也是一个换行过滤器,语法为:{{ value|linebreak }},它替换字符串中所有的“\n”为<br />,新形成的新行使用段落标签<p></p>包含。
    • 例如, "Joel\nis a slug"会被转换为 <p>Joel<br />is a slug</p>

date日期

  • 功能:

    根据给定格式,对一个date变量进行格式化。
  • 语法:

    {{ value|date:"D d M Y" }}
    • 也可以不使用格式字符串,{{ value|date }}
  • 如果value是datetime对象

    如,datetime.datetime.now(),将输出字符串'Web 09 Jan 2008'。
  • 传递的时间格式也可以是预定义的格式
    • DATE_FORMAT
    • DATETIME_FORMAT
    • SHORT_DATE_FORMAT
    • SHORT_DATET
    • 预定义的格式根于语言环境不同而有所不同。

      Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
  • 示例效果:

这里使用datetime模块中的datetime.now()函数返回时间元组,将时间元组赋值给变量value;date过滤器不使用参数,采用默认参数。

# views.py文件中
def filter_Test(request, value):
# 参数value
from datetime import datetime
value = datetime.now()
return render(request, 'filterTest.html', {'value': value})

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

default默认

dictsort字典排序

  • 功能:

    接收一个字典列表,并返回按参数中给出的键排序后的列表;
  • 语法:
    • {{ value|dictsort:'key' }}
#如果value为
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
# 则经过dictsort根据键name排序后为
# {{ value|dictsort:'name' }}
[
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
{'name': 'zed', 'age': 19},
]
  • 示例效果
# 在views.py文件中
## 内置过滤器dictsort测试专用
def filter_Test(request, value):
# 参数value,传值给语法中的value
value = [
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
return render(request, 'filterTest.html', {'value': value})
  • 示例效果:

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

可以看出,字典列表已经根据name键排序。

dictsortreversed字典逆排序

  • 功能:

    接收一个字典列表,并返回按照参数中给出的键按相反顺序排序的列表;这与上面的过滤器完全相同,但返回的值将是相反的顺序。
  • 语法:
    • {{ value|dictsortreversed:'key' }}
#如果value为
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
# 则经过disort根据键name排序后为
# {{ value|dictsortreversed:'name' }}
[
{'name': 'zed', 'age': 19},
{'name': 'joe', 'age': 31},
{'name': 'amy', 'age': 22},
]
  • 示例效果:

    前面使用name,这里使用age

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

从结果上看,字典列表按照age键进行逆排序。

center字符串居中

  • 功能:

    在给定字符串宽度中,让字符串居中显示;

  • 语法:

    • {{ value|center:'width' }}
    • 例如:

      {{ "walt"|center:'10' }};则结果为

      "☐☐☐walt☐☐☐",☐为空格。
  • 示例效果:

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

  • 拓展:

    此外还有ljust左对齐和rjust右对齐方法,类似center。

escape转义用于HTML的字符代码

  • 功能:

    将HTML能识别到的符号转换为HTML字符代码。
  • 语法:

    {{ value|escape }}
  • 该部分未实验成功,待更新。

escapejs转义用于JavaScript字符串的字符

  • 功能:

    转义用于JavaScript字符串的字符。虽然这在HTML中是不安全的,但可以确保在使用模板生成JavaScript/JSON时避免语法错误。

  • 语法:

    {{ value|escapejs }}

  • 示例效果:

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

floatformat格式化显示浮点数

  • 功能:

    根据参数控制浮点数的格式化显示,舍去位数采用四舍五入。
  • 语法:
    • {{ value|floatformat:dotWidth }}
    • 参数dotWidth指定了浮点数显示的位数;
    • dotWidth默认为-1,其中负号表示当value小数点后都是0时,只显示整数部分;1表示当value小数点后有至少1位非零数时,只保留1位小数;
    • dotWidth=num,且num>0,其中表示不管value小数点后有没有非零数,保留num位小数;
    • dotWidth=num,且num<0,其中负号表示当value小数点后都是0时,只显示整数部分;1表示当value小数点后有至少1位非零数时,保留num位小数。
  • 示例效果:

    浮点数的小数点后全是0

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

浮点数的小数点后有非零值

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

safe安全模式

  • 功能:

    将字符串标记为在输出之前不需要进一步的HTML转义。当自动转义关闭时,此过滤器不起作用。
  • 语法:

    {{ value|safe }}
  • 示例效果:

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

总结
  1. 本文完整项目文件代码下载地址: 完整示例
  2. Django完整内置过滤器帮助文档:Django内置过滤器完整
  3. 参考文献:Django 中文文档 1.8
  4. 能力有限,欢迎指错交流;
上一篇:mysql支持emoji表情符存储


下一篇:极限编程核心价值:反馈(Feedback)