2010-05-01 196 views

回答

3

string.Formatter()的新穎性意味着Django不太可能支持它的內置。可以編寫或查找實現它的模板標籤或過濾器。

21

萬一有人找answser,這是我的問題解決了使用自定義templatetag:

from django import template 

register = template.Library() 

@register.filter 
def percentage(value): 
    return format(value, "%") 
+1

如果你想控制小數位:'返回格式(價值「 0.2%」)'(用於2位小數) – User 2017-09-19 12:46:26

7

這是我如何解決了這個問題:用

from django import template 

register = template.Library() 

def percentage(value): 
    return '{0:.2%}'.format(value) 

register.filter('percentage', percentage) 
1

更好的解決方案國際化與Python 2.5一起工作。

from django import template 

register = template.Library() 
from django.template.defaultfilters import floatformat 

@register.filter 
def percent(value): 
    if value is None: 
    return None 
    return floatformat(value * 100.0, 2) + '%' 
10

下面是我使用的是什麼(我們只列出小數,沒有花車,順便說一句):

@register.filter 
def as_percentage_of(part, whole): 
    try: 
     return "%d%%" % (float(part)/whole * 100) 
    except (ValueError, ZeroDivisionError): 
     return "" 

使用方法如下:

Monkeys constitute {{ monkeys|as_percentage_of:animals }} of all animals. 

其中,如果猴子是3和動物是6,你會得到:

50% 
43

我正在尋找幾乎相同的問題,發現模板標籤寬度。 您可以使用此標記從原始值和計算百分比的總值中計算模板中的百分比,而不是像您的問題中那樣計算百分比。它的工作,如果你只需要在沒有精確的整數百分比:

{% widthratio value total_value 100 %} 

編號:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#widthratio

+1

+1使用標準庫 – ashwoods 2013-07-23 14:40:48

+8

只適用於複製粘貼。 {%widthratio float_value 1 100%} – ErDmKo 2014-06-27 13:24:06