Linux学习之路我用 LinuxLinux

django模板2-常用过滤器(上)

2019-02-23  本文已影响0人  小短腿电工

模版常用过滤器

在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。而在模版中,则是通过过滤器来实现的。过滤器使用的是|来使用。比如使用add过滤器,那么示例代码如下:

    {{ value|add:"2" }}

那么以下就讲下在开发中常用的过滤器。

add

将传进来的参数添加到原来的值上面。这个过滤器会尝试将参数转换成整形然后进行相加。如果转换成整形过程中失败了,那么会将参数进行拼接。如果是字符串,那么会拼接成字符串,如果是列表,那么会拼接成一个列表。示例代码如下:

{{ value|add:"2" }}

如果value是等于4,那么结果将是6。如果value是等于一个普通的字符串,比如abc,那么结果将是abc2add过滤器的源代码如下:

def add(value, arg):
    """Add the arg to the value."""
    try:
        return int(value) + int(arg)
    except (ValueError, TypeError):
        try:
            return value + arg
        except Exception:
            return ''

cut

移除值中所有指定的字符串。类似于python中的replace(args,"")。示例代码如下:

{{ value|cut:" " }}

以上示例将会移除value中所有的空格字符。cut过滤器的源代码如下:

def cut(value, arg):
    """Remove all values of arg from the given string."""
    safe = isinstance(value, SafeData)
    value = value.replace(arg, '')
    if safe and arg != ';':
        return mark_safe(value)
    return value

date

将一个日期按照指定的格式,格式化成字符串。示例代码如下:

# 数据
context = {
    "birthday": datetime.now()
}

# 模版
{{ birthday|date:"Y/m/d" }}

那么将会输出2018/02/01。其中Y代表的是四位数字的年份,m代表的是两位数字的月份,d代表的是两位数字的日。
还有更多时间格式化的方式。见下表。

格式字符 描述 示例
Y 四位数字的年份 2018
m 两位数字的月份 01-12
n 月份,1-9前面没有0前缀 1-12
d 两位数字的天 01-31
j 天,但是1-9前面没有0前缀 1-31
g 小时,12小时格式的,1-9前面没有0前缀 1-12
h 小时,12小时格式的,1-9前面有0前缀 01-12
G 小时,24小时格式的,1-9前面没有0前缀 1-23
H 小时,24小时格式的,1-9前面有0前缀 01-23
i 分钟,1-9前面有0前缀 00-59
s 秒,1-9前面有0前缀 00-59
上一篇下一篇

猜你喜欢

热点阅读