Есть ли фильтр для деления для Django Template? - PullRequest
32 голосов
/ 09 декабря 2011

Я заметил, что есть встроенный фильтр add, но я не смог найти divide.

Я новичок в Django и не уверен, есть ли такой фильтр.

Ответы [ 6 ]

59 голосов
/ 09 декабря 2011

Это не так. Но если вы маленький хакер ....

http://slacy.com/blog/2010/07/using-djangos-widthratio-template-tag-for-multiplication-division/

для вычисления A * B: {% widthratio A 1 B%}

для вычисления A / B: {% widthratio A B 1%}

для вычисления A ^ 2: {% widthratio A 1 A%}

для вычисления (A + B) ^ 2: {% widthratio A | add: B 1 A | add: B%}

для вычисления (A + B) * (C + D): {% widthratio A | add: B 1 C | add: D%}

Также вы можете создать фильтр для деления за 2 минуты

21 голосов
/ 01 июля 2013

Использование пользовательского фильтра:

register = template.Library()

@register.filter
def divide(value, arg):
    try:
        return int(value) / int(arg)
    except (ValueError, ZeroDivisionError):
        return None
4 голосов
/ 15 ноября 2017

В ваших шаблонах есть математический модуль для выполнения математических операций: Django-Mathfilters .

Он содержит add, как вы сказали, но также div для деления:

 8 / 3 = {{ 8|div:3 }}
4 голосов
/ 20 июня 2014

Я бы использовал пользовательский шаблон, но если вы не хотите, вы можете использовать встроенный тег widthratio,

{% widthratio request.session.get_expiry_age 3600 1 %} 

Другой пример

{% widthratio value 1150000 100 %}

Синтаксис:

{% widthratio parm1 parm2 parm3 %}

Так что в основном он используется для масштабирования изображений, но вы можете использовать его для деления. Что он делает: parm1 / parm2 * parm3.

Надеюсь, это поможет, больше по ширине здесь .

3 голосов
/ 09 декабря 2011

Выезд http://djangosnippets.org/snippets/2424/

Надеюсь, это поможет вам.

2 голосов
/ 23 октября 2018

Вы можете использовать divisibleby

Возвращает True, если значение делится на аргумент.

Например:

{{ value|divisibleby:"3" }}

Если значение равно 21, вывод будет True.

также вы можете увидеть Django Docs

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