Мне хотелось бы что-то похожее на string formatting from the standard library.Есть ли фильтр шаблонов django для отображения процентов?
«%» Процент. Умножает число на 100 и отображает в фиксированном ('f') формате, а затем знак процента.
Мне хотелось бы что-то похожее на string formatting from the standard library.Есть ли фильтр шаблонов django для отображения процентов?
«%» Процент. Умножает число на 100 и отображает в фиксированном ('f') формате, а затем знак процента.
Новинка string.Formatter()
означает, что Django вряд ли поддержит его. Либо напишите, либо найдите тег шаблона или фильтр, который его реализует.
В случае, если кто-то ищет answser, это то, как я решил проблему с помощью пользовательского templatetag:
from django import template
register = template.Library()
@register.filter
def percentage(value):
return format(value, "%")
Это, как я решил проблему:
from django import template
register = template.Library()
def percentage(value):
return '{0:.2%}'.format(value)
register.filter('percentage', percentage)
Лучшее решение с интернационализация работает с 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) + '%'
Вот что я использую (мы показываем только десятичные, а не плавает, кстати):
@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%
Я искал почти тот же вопрос и нашел widthratio тег шаблона. Вместо того, чтобы иметь процент, уже рассчитанный, как в вашем вопросе, вы можете использовать этот тег для вычисления процента в шаблоне от исходного значения и общего значения, на которое рассчитывается ваш процент. Это делает работу, если вам нужно только целочисленное процент без точности:
{% widthratio value total_value 100 %}
Ref: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#widthratio
Если вы хотите контролировать знаков после запятой: 'формат возврата (значение,«0,2%»)' (для 2 десятичных знака) – User