将任意值格式化成字符串输出

    安企 CMS 模板中如何将数字、字符串、数组等任意值按指定格式格式化成字符串输出?

    stringformat 过滤器可以将数字、字符串、数组等任意值按指定格式格式化成字符串输出。

    一些格式化标准:

    • %v 输出结构体 {10 30}
    • %+v 输出结构体显示字段名 {one:10 tow:30}
    • %#v 输出结构体源代码片段 main.Point{one:10, tow:30}
    • %T 输出值的类型 main.Point
    • %t 输出格式化布尔值 true
    • %d 输出标准的十进制格式化 100
    • %b 输出标准的二进制格式化 99 对应 1100011
    • %c 输出定整数的对应字符 99 对应 c
    • %x 输出十六进制编码 99 对应 63
    • %f 输出十进制格式化 99 对应 63
    • %e 输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08
    • %E 输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08
    • %s 进行基本的字符串输出 “\“string\”” 对应 “string”
    • %q 源代码中那样带有双引号的输出 “\“string\”” 对应 “\“string\””
    • %p 输出一个指针的值 &jgt 对应 0xc00004a090
    • % 后面使用数字来控制输出宽度 默认结果使用右对齐并且通过空格来填充空白部分
    • %2.2f 指定浮点型的输出宽度 1.2 对应 1.20
    • %*2.2f 指定浮点型的输出宽度对齐,使用 - 标志 1.2 对应 *1.20

    使用方法

    stringformat 过滤器的使用方法:

    {{ obj|stringformat:"格式定义" }}
    

    比如将 3.141592653 格式化成保留 2 位小数点的数,则可以这么写:

    {{ 3.141592653|stringformat:"%.2f" }}
    # 显示结果
    3.14
    

    示例演示

    {{ simple.float|stringformat:"%.2f" }}
    {{ simple.uint|stringformat:"Test: %d" }}
    {{ simple.chinese_hello_world|stringformat:"Chinese: %s" }}
    # 显示结果
    Hello!
    3.14
    Test: 8
    Chinese: 你好世界