是否有django模板过滤器来显示百分比?

jbo*_*chi 21 django formatting django-templates

我想要类似于标准库中字符串格式.

'%'百分比.将数字乘以100并以固定('f')格式显示,后跟百分号.

Jer*_*dis 60

我正在寻找几乎相同的问题,并找到了widthratio模板标签.您可以使用此标记从原始值和计算百分比的总值计算模板中的百分比,而不是像您的问题中那样计算百分比.如果您只需要一个没有精度的整数百分比,它就可以完成工作:

{% widthratio value total_value 100 %}
Run Code Online (Sandbox Code Playgroud)

参考:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#widthratio

  • 只是为了复制粘贴.{%widthratio float_value 1 100%} (9认同)
  • 我希望有一种方法可以将其标记为不仅仅是投票的答案。标记的答案在某种意义上是正确的(尽管它不包含实现),但是问题询问是否有可以执行此操作的内置过滤器,并且有... (2认同)

jbo*_*chi 23

如果有人正在寻找答案,这就是我用自定义模板标签解决问题的方法:

from django import template

register = template.Library()

@register.filter
def percentage(value):
    return format(value, "%")
Run Code Online (Sandbox Code Playgroud)

  • 如果要控制小数位:`return format(value,“ .2%”)`(用于2个小数位) (2认同)

tob*_*ych 14

这是我正在使用的(顺便说一下,我们只显示小数,而不是浮点数):

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

像这样使用它:

Monkeys constitute {{ monkeys|as_percentage_of:animals }} of all animals.
Run Code Online (Sandbox Code Playgroud)

如果猴子是3,动物是6,你会得到:

50%
Run Code Online (Sandbox Code Playgroud)


小智 7

这就是我解决问题的方法:

from django import template

register = template.Library()

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

register.filter('percentage', percentage)
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 3

的新颖性string.Formatter()意味着 Django 不太可能内置支持它。编写或查找实现它的模板标记或过滤器。