Есть ли фильтр шаблонов django для отображения процентов? - PullRequest
19 голосов
/ 01 мая 2010

Я бы хотел что-то похожее на форматирование строки из стандартной библиотеки .

'%' Процент. Умножает число на 100 и отображается в фиксированном виде ('f') формат с последующим знаком процента.

Ответы [ 6 ]

53 голосов
/ 20 июня 2013

Я искал почти тот же вопрос и нашел тег шаблона widthratio . Вместо того, чтобы рассчитывать процент уже, как в вашем вопросе, вы можете использовать этот тег, чтобы рассчитать процент в шаблоне от исходного значения и общего значения, по которому рассчитывается ваш процент. Это делает работу, если вам нужен только целочисленный процент без точности:

{% widthratio value total_value 100 %}

Ссылка: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#widthratio

23 голосов
/ 04 мая 2010

Если кто-то ищет ответчика, я решил проблему с помощью специального тега шаблона:

from django import template

register = template.Library()

@register.filter
def percentage(value):
    return format(value, "%")
14 голосов
/ 11 декабря 2012

Вот что я использую (кстати, мы показываем только десятичные дроби, а не числа с плавающей запятой):

@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%
7 голосов
/ 12 февраля 2011

Вот как я решил проблему:

from django import template

register = template.Library()

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

register.filter('percentage', percentage)
2 голосов
/ 19 сентября 2011

Лучшее решение с интернационализацией работает с 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) + '%' 
2 голосов
/ 02 мая 2010

Новизна string.Formatter() означает, что Django вряд ли будет поддерживать его встроенным. Либо напишите или найдите шаблонный тег или фильтр, который его реализует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...