是否有Django模板标签可将百分比转换为人类可读的格式?

时间:2019-01-02 16:29:09

标签: django django-templates

例如:

  • 将0.01转换为1%
  • 将0.001转换为0.1%
  • 转换0.5%到50%

我在humanize中看到什么都没有,并且在Django文档中找不到任何东西。我尝试{{ value|multiply:100 }}%失败。我知道我可以编写自己的模板标签,但我希望尽可能避免这样做。

  

更新:我也研究了widthratio标记。值为0.001时将变为0%。不幸的是,这不是我想要的。

5 个答案:

答案 0 :(得分:2)

我继续创建了一个模板标签过滤器,如下所示:

@register.filter
def to_percent(obj, sigdigits):
    if obj:
        return "{0:.{sigdigits}%}".format(obj, sigdigits=sigdigits)
    else: return obj

我很惊讶地看到在另一个答案中分享的 link 还没有一个干净的解决方案。我看到的最好的一个使用 try 块而不是 if obj ......我个人希望在我的用例中看到一个错误,但这取决于你。

不过,很高兴知道没有比我看到的更“Django”的方法了。您可以在模板中使用它,例如...

{{{{mymodel.some_percentage_field|to_percent:2}}

其中 2 是您想要的有效数字位数。

答案 1 :(得分:1)

正如Michael上文所述,我建议您为此编写自己的模板标签:https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/

答案 2 :(得分:1)

您可以使用Django内置模板标签numpy.ScalarType

完成此操作
numbers.Number

如果this_value为175,max_value为200,max_width为100,则上例中的图像将为88像素宽(因为175/200 = .875; .875 * 100 = 87.5,四舍五入为88)

您还可以查看详细信息here

答案 3 :(得分:0)

也许使用以下解决方案之一:Is there a django template filter to display percentages?

希望有帮助。如果没有,请编写自己的简单过滤器:)

答案 4 :(得分:0)

如果您只需要用百分比格式设置数字格式,例如“ 65%”:

{{ number|stringformat:"d%%" }}