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


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

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

    add加

    • 功能:
      把add后的参数num加给value;
      数字相加会进行算术相加;
      字符串会被拼接。

    • 语法:
      {{ value|add:"num" }}

    • 示例效果:

      1、数字相加
      这里写图片描述

      2、字符串相加
      这里写图片描述

    join连接

    • 功能:
      以指定字符串str连接列表list中的元素,与python中的str.join(list)相似;
    • 语法
      {{ value|join }}
    • 示例效果:
      使用"// "连接列表,
      {{ value|join:" // " }}
      这里写图片描述

    addslashes在引号前加斜杠

    • 功能:
      在引号前面加上斜杆。例如,用于在CSV中转义字符串。
    • 语法:
      {{ value|addslashes }}
      如果value是"I'm using?Django",输出将变成"I'm using Django".
    • 示例效果:
      地址栏中的 %20表示空格;
      这里写图片描述

    capfirst首字母大写

    • 功能:
      大写变量的第一个字母。如果第一个字符不是字母,则该过滤器不会生效。
    • 语法:
      {{ value | capfirst }}
    • 示例效果:
      这里写图片描述

    title首字母大写

    • 功能:
      大写字符串中单词的第一个字母。如果第一个字符不是字母,则该过滤器不会生效。
    • 语法:
      {{ value | title}}
    • 示例效果:

    这里写图片描述
    当单词“1good”并不是以字母开头时,title过滤器失效。

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

    cut切割指定字符

    • 功能:
      移除value中所有的与给出的变量相同的字符。
    • 语法:
      {{ value|cut:"str" }};str为指定移除字符。
    • 示例效果:
      这里写图片描述

    length求字符串或列表长度

    • 功能:
      返回字符串或列表长度;

    • 语法:
      {{ value|length}}

    • 示例效果:

    这里写图片描述

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

    linenumbers换行加行号

    • 功能:
      当文本为多行时,为每行添加行号。返回的文本可能是一行,可以同时使用linebreaksbr换行。
    • 语法:
      {{ value|linenumbers }}
    • 示例效果:
      这里使用value='a b c',为了防止浏览器解析为一行,这里使用linebreaksbr过滤器进行换行。
      {{ value|linenumbers|linebreaksbr }}
    • 拓展:
      • linebreaksbr是一个换行过滤器,语法为:{{ value|linebreaksbr }},它替换字符串中所有的“ ”为“
        ”;
      • 例如, 。
      • linebreak也是一个换行过滤器,语法为:{{ value|linebreak }},它替换字符串中所有的“ ”为<br />,新形成的新行使用段落标签<p></p>包含。
      • 例如, "Joel is 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
      • 预定义的格式根于语言环境不同而有所不同。
        这里写图片描述
    • 示例效果:

    这里使用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})
    

    这里写图片描述

    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})
    
    • 示例效果:

    这里写图片描述

    可以看出,字典列表已经根据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

    这里写图片描述

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

    center字符串居中

    • 功能:
      在给定字符串宽度中,让字符串居中显示;

    • 语法:

      • {{ value|center:'width' }}
      • 例如:
        {{ "walt"|center:'10' }};则结果为
        "☐☐☐walt☐☐☐",☐为空格。
    • 示例效果:

    这里写图片描述

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

    escape转义用于HTML的字符代码

    • 功能:
      将HTML能识别到的符号转换为HTML字符代码。
    • 语法:
      {{ value|escape }}
    • 该部分未实验成功,待更新。

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

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

    • 语法:
      {{ value|escapejs }}

    • 示例效果:

    这里写图片描述

    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

    这里写图片描述
    浮点数的小数点后有非零值

    这里写图片描述

    safe安全模式

    • 功能:
      将字符串标记为在输出之前不需要进一步的HTML转义。当自动转义关闭时,此过滤器不起作用。
    • 语法:
      {{ value|safe }}
    • 示例效果:

    这里写图片描述

    总结
    1. 本文完整项目文件代码下载地址: 完整示例
    2. Django完整内置过滤器帮助文档:Django内置过滤器完整
    3. 参考文献:Django 中文文档 1.8
    4. 能力有限,欢迎指错交流;
  • 相关阅读:
    HTML链接/实施CSS的三种方法
    XML之Well-Formed文档规则
    【摘】SVN提交与版本冲突
    Web开发之404小结
    TCP 连接的要点
    [转] Epoll 相对Poll和Select的优点
    [转] 剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)
    GDB调试技巧
    [转] 关于c++的头文件依赖
    [转] Linux中gcc,g++常用编译选项
  • 原文地址:https://www.cnblogs.com/waltsmith/p/8088099.html
Copyright © 2020-2023  润新知