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

pytils_numeral filters/tags demo

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

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

Фильтры

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

choose_plural и get_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>

Зачастую нужно показывать и число, и название объекта в правильной форме, а не только название объекта. В этом случае следует воспользоваться фильтром get_plural. Пример с теми же комментариями можно записать проще: {{ params.comment_number|get_plural:"комментарий,комментария,комментариев" }}. get_plural удобен еще и тем, что можно указать вариант, когда значение равно нулю. Например, гораздо симпатичней "без комментариев", чем "0 комментариев". В этом случае к вариантам нужно просто добавить еще один - нуль-вариант. Пример: {{ params.zero|get_plural:"пример,примера,примеров,без примеров" }}.

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

<p>Зачастую нужно показывать и число, и название объекта в правильной форме, а не только название
объекта. В этом случае следует воспользоваться фильтром <code>get_plural</em>. Пример с теми же
комментариями можно записать проще: 
<em>{% templatetag openvariable %} params.comment_number|get_plural:"комментарий,комментария,комментариев" {% templatetag closevariable %}</em>.
<code>get_plural</code> удобен еще и тем, что можно указать вариант, когда значение равно нулю.
Например, гораздо симпатичней "без комментариев", чем "0 комментариев". В этом случае к вариантам
нужно просто добавить еще один - нуль-вариант. Пример: 
<em>{% templatetag openvariable %} params.zero|get_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 }}. У целых можно менять пол (по умолчанию - мужской, MALE): {{ params.int_value|in_words:"FEMALE" }} (женский), {{ params.int_value|in_words:"NEUTER" }} (средний).

У дробных почти то же самое, только пол всегда женский и не меняется (т.е. параметр передавать можно, но он не будет влиять). {{ 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>. У целых можно менять пол (по умолчанию - 
мужской, MALE): <em>{% templatetag openvariable %} params.int_value|in_words:"FEMALE" {% templatetag closevariable %}</em> (женский),
<em>{% templatetag openvariable %} params.int_value|in_words:"NEUTER" {% templatetag closevariable %}</em> (средний).</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 %}