在jinja2中有格式化数字的直接方法吗?

Luc*_*cas 42 python google-app-engine jinja2

我需要在jinja2中格式化十进制数字.

当我需要格式化日期时,我在模板中调用strftime()方法,如下所示:

{{ somedate.strftime('%Y-%m-%d') }}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有类似的方法来做这个数字.

提前致谢!

Lip*_*pis 65

你可以这样做,Python方式:

{{ '%04d' % 42 }}

{{ 'Number: %d' % variable }}
Run Code Online (Sandbox Code Playgroud)

或使用该方法:

{{ '%d' | format(42) }}
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢第一个,因为它与Python完全一样.

  • 字符串格式的方法已被弃用,应尽可能避免使用(我想...或类似的方法...) (2认同)

Yuj*_*ita 34

我想强调Joran Beasley的评论,因为我发现它是最好的解决方案:

原评:

你不能做{{"{0:0.2f}".format(my_num)}}或{{my_num | format"%0.2f"}}(wsgiarea.pocoo.org/jinja/docs/filters.html#format ) - Joran Beasley 12年1月12日21:07`

确实,{{ '{0:0.2f}'.format(100) }}作品非常有效.

这只是python字符串格式化.给定第一个参数,{0}使用以下格式对其进行格式化0.2f.


Tki*_*ovr 10

你可以使用round它会让你将数字四舍五入到给定的精度用法是:

 round(value, precision=0, method='common')
Run Code Online (Sandbox Code Playgroud)

第一个参数指定精度(默认值为0),第二个参数指定可以选择3的舍入方法:

'common' rounds either up or down
'ceil' always rounds up
'floor' always rounds down
Run Code Online (Sandbox Code Playgroud)


San*_*rya 5

格式化和填充可以相同的方式很好地工作。

{{ "{0}".format(size).rjust(15) }}
Run Code Online (Sandbox Code Playgroud)