{% extends "base.html" %} {% block content %} {% load pytils_numeral %}

pytils_numeral filters/tags demo

Для загрузки компоненты, в шаблон вставьте код:

{% templatetag openblock %} load pytils_numeral {% templatetag closeblock %}

Фильтры

Для наглядности, текст подставленный фильтром выделен курсивом.

choose_plural

Выбор нужной формы множественного числа. Классический пример с количеством комментариев: {{ params.comment_number }} {{ params.comment_number|choose_plural:params.comment_variants }}

В качестве аргумента можно передавать не только список вариантов, но и варианты в одну строку, например: так {{ params.comment_number }} комментари{{ params.comment_number|choose_plural:"й,я,ев" }} или так {{ params.comment_number }} {{ params.comment_number|choose_plural:"комментарий, комментария, комментариев" }} - как Вам больше нравится.

Сделано это так:

<p>Выбор нужной формы множественного числа. Классический пример с количеством 
комментариев: {% templatetag openvariable %} params.comment_number {% templatetag closevariable %} 
<em>{% templatetag openvariable %} params.comment_number|choose_plural:params.comment_variants {% templatetag closevariable %}</em>
</p>

<p>В качестве аргумента можно передавать не только список вариантов, но и 
варианты в одну строку, например: так {% templatetag openvariable %} params.comment_number {% templatetag closevariable %} 
комментари<em>{% templatetag openvariable %} params.comment_number|choose_plural:"й,я,ев" {% templatetag closevariable %}</em> или так 
{% templatetag openvariable %} params.comment_number {% templatetag closevariable %} 
<em>{% templatetag openvariable %} params.comment_number|choose_plural:"комментарий, комментария, комментариев" {% templatetag closevariable %}</em>
- как Вам больше нравится.</p>

Если включен режим PYTILS_SHOW_VALUES_ON_ERROR, то при ошибке отображается первый вариант либо пустая строка (если получить первый вариант не получилось).

rubles

Рубли словами. К примеру, {{ params.rubles_value }} р. словами будет {{ params.rubles_value|rubles }}. У этого фильтра есть один параметр, определяющий, нужно ли нулевые копейки "проговаривать". Если нужно - то True, по умолчанию rubles этого не делает. Пример: {{ params.rubles_value2 }} р. словами будет {{ params.rubles_value2|rubles }}, а с копейками - {{ params.rubles_value2|rubles:True }}.

В шаблоне этот фрагмент записан так:

<p>Рубли словами. К примеру, {% templatetag openvariable %} params.rubles_value {% templatetag closevariable %} р. словами будет 
<em>{% templatetag openvariable %} params.rubles_value|rubles {% templatetag closevariable %}</em>. 
У этого фильтра есть один параметр, определяющий, нужно ли нулевые копейки "проговаривать". Если нужно - 
то True, по умолчанию <code>rubles</code> этого не делает. Пример: {% templatetag openvariable %} params.rubles_value2 {% templatetag closevariable %} р. 
словами будет <em>{% templatetag openvariable %} params.rubles_value2|rubles {% templatetag closevariable %}</em>, а с копейками - 
<em>{% templatetag openvariable %} params.rubles_value2|rubles:True {% templatetag closevariable %}</em>.</p>

Если включен режим PYTILS_SHOW_VALUES_ON_ERROR, то при ошибке отображается просто число.

in_words

Число словами. Можно целые, можно дробные. Примеры: {{ params.int_value }} - {{ params.int_value|in_words }}. У целых можно менять пол (по умолчанию - мужской, 1): {{ params.int_value|in_words:2 }} (женский, 2), {{ params.int_value|in_words:3 }} (средний, 3).

У дробных почти то же самое, только пол всегда женский и не меняется (т.е. параметр передавать можно, но он не будет влиять). {{ params.float_value }} словами будет {{ params.float_value|in_words }}.

В коде это так:

<p>Число словами. Можно целые, можно дробные. Примеры: {% templatetag openvariable %} params.int_value {% templatetag closevariable %} - 
<em>{% templatetag openvariable %} params.int_value|in_words {% templatetag closevariable %}</em>. У целых можно менять пол (по умолчанию - 
мужской, 1): <em>{% templatetag openvariable %} params.int_value|in_words:2 {% templatetag closevariable %}</em> (женский, 2),
<em>{% templatetag openvariable %} params.int_value|in_words:3 {% templatetag closevariable %}</em> (средний, 3).</p>

<p>У дробных почти то же самое, только пол всегда женский и не меняется (т.е. 
параметр передавать можно, но он не будет влиять). {% templatetag openvariable %} params.float_value {% templatetag closevariable %} 
словами будет <em>{% templatetag openvariable %} params.float_value|in_words {% templatetag closevariable %}</em>.</p>

Если включен режим PYTILS_SHOW_VALUES_ON_ERROR, то при ошибке отображается просто число.

Теги

Пока только один.

sum_string

Наиболее общая функция для работы с числами. Умеет "проговаривать" числа и одновременно подставлять название объекта в нужной форме. Например, вместо {{ params.comment_number }} комментарий(ев) можно смело писать {% sum_string params.comment_number params.comment_gender params.comment_variants %}

В коде это реализовано так:

<p>Наиболее общая функция для работы с числами. Умеет "проговаривать" числа и 
одновременно подставлять название объекта в нужной форме. Например, вместо 
{% templatetag openvariable %} params.comment_number {% templatetag closevariable %} комментарий(ев) можно смело писать 
<em>{% templatetag openblock %} sum_string params.comment_number params.comment_gender params.comment_variants {% templatetag closeblock %}</em>
</p>

Если включен режим PYTILS_SHOW_VALUES_ON_ERROR, то при ошибке отображается просто число (без названия объекта).

{% endblock %}