欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-23 07:49:41
...
前言
  • 基本环境
    • 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. 能力有限,欢迎指错交流;