zoukankan      html  css  js  c++  java
  • django 过滤器总结

    Django过滤器

    add过滤器:将字符串和字母、整数链接(若为字符串会转化为整数形式)
    注:若是一个字母字符串和一个数字进行链接会输出空
        {{ 1|add:2 }}返回一个3
        {{ "2"|add:3 }}返回一个5
        {{ "a"|add:3 }}#返回一个空

    cut过滤器 移除指定的字符串注:后面的参数必须是字符串的形式
        {{ "hello world"|cut:" " }}#移除了hello world 里的所有空格 结果为 helloworld
        {{ "hello world"|cut:"e" }}#结果为hllo world 移除了e
        {{ 123456|cut:1 }}#会报错 是因为参数不是字符串的形式 不管前面所要移除的对象是否为整数 参数必须是字符串的形式

    data过滤器--过滤时间的过滤器(要用到datetime模块)
        {{ time|date:"Y-m-g" }}#后面的参数必须要加引号 会显示出时间年月时分

    first过滤器和last过滤器--输出列表/元组/字符串中的第一个 /最后一个值(不能传参数)
    且元祖列表都要提前定义(只输入变量名)
    #name:["ll","ww","ee"]
        {{ name|first }}#输出li
        {{ name|last }}#输出ee
        {{ "15784"|first }}#字符串 输出1

    floatformat过滤器--将浮点数保留小数 不传如参数就是默认保留一位(只看小数点后两位)
    且正数和负数方式一样
        {{ 1.41|floatformat }}#输出1.4
        {{ 1.545|floatformat }}#输出1.5(只看小数点后两位等同于1.54)
        {{ -1.05|floatformat }}#输出-1.1
        {{ 1.247|floatformat:2 }}#输出1.25
    join过滤器 在中间加一些特殊符号 类似于python的join(可以在列表,元祖操作)
        {{ "hello"|join:"*" }}#输出h*e*l*l*o
        {{ name|join:"-" }}

    length过滤器 获取字符串、元祖、列表的长度(没有参数)
        {{ "1515"|length }}#输出4

    upper/lower过滤器 将字母改成大/小写(没有参数)
        {{ "woaini"|upper }}#输出WOAINI
        {{ "DEFRT"|lower }}#输出defrt

    random过滤器 随机抽取列表、元祖、字符串中的随机一个数,类似于python中的random模块
        {{ name|random }}#随机在这个里面输出一个值

    safe过滤器 关闭字符串自动转义 就是传入的值里面没有任何特殊字符就会原样输出 若有就会转义输出(列入<br>),且python中的特殊字符无法识别
    #"style": "abcdef<br>adasds"
        {{ style|safe }}#会输出abcdef
                                adasds
    #"style": "woaini"
        {{ style|safe }}#会输出woaini(原样输出)

    slice过滤器 类似于python的slice 切片(对字符串、元祖、列表操作)
        {{ "woaini"|slice:"2" }}#输出wo(默认是从第0位开始到第2位结束,且不包含第二位)
        {{ "woshini"|slice:"2:5" }}#输出shi

    striptags过滤器 删除字符串中的html标签(前面的参数){{ value|striptags }} 中的value中的html标签(没有参数)
        {{ style|striptags }}#输出一个不带有html标签的(style里有h1标签就会删除原样输出)

    truncatechars过滤器 如果给定的字符串长度超过了过滤器指定的长度。那么就会进行切割,并且会拼接三个点来作为省略号
        {{ "woaini"|truncatechars:5 }}#输出wo...本应输出woain但要用三个省略号作为末尾,所以就要输出wo...
        {{ "woaini"|truncatechars:6 }}#输出woaini 字符串长度和过滤器指定长度相同 原样输出
    注意:若value中带有html标签 不会自动转义 会自主输出
    #"style": "<h1>abcdefadasds</h1>"
        {{ style|truncatechars:6 }}#输出<h1..

    truncatechars_html过滤器 truncatechars过滤器类似只是不会切割html标签(输出的结果类似)
    #"style": "<h1>abcdefadasds</h1>"
        {{ style|truncatechars_html:5}}#输出<h1>ab...</h1>

    default过滤器: 使用方式'{{ value | default('默认值')}}'。如果Value 这个‘key’不存在,那么就会使用‘default’过滤器提供的默认值。
                   如果你想使用类似于‘python’中判断某个值是否为false(例如:none,空字符串、空列表、空字典),
                   那么就必须传递另外一个参数‘{{value | default ('默认值'boolean = True)}}’

        {{ "nlll"|default:"noneddd" }}#输出nlll 后面的值是False 就会输出value上写的值
    default_if_none过滤器 只有值是none是才会用default_if_none提供的默认值 和default的关系是default包含defaul_if_none过滤器
    {{ "nonon"|default_if_none:"1" }}#输出的值为nonon

     

    自定义过滤器

     

    自定义过滤器的步骤:

    首先在某个app中,创建一个python包,叫做templatetags,注意,这个包的名字必须为templatetags,不然就找不到。

    在这个templatetags包下面,创建一个python文件用来存储过滤器。

    在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数永远是被过滤的那个值,并且如果在使用过滤器的时候传递参数,那么还可以定义另外一个参数。但是过滤器最多只能有2个参数。

    在写完过滤器(函数)后,要使用django.template.Library.filter进行注册,文件my_filter.py。

    from django import template

    register = template.Library()

    def greet(value,word):

        return value + word

    register.filter("greet",greet)

    还要把这个过滤器所在的这个app添加到settings.INSTALLED_AAPS中,不然Django也找不到这个过滤器。

    在模板中使用load标签加载过滤器所在的python包。(文件index.html)

    {% load my_filter %}

    可以使用过滤器了。

  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/pythonyeyu/p/10115769.html
Copyright © 2011-2022 走看看