Django: как сделать расчет внутри шаблона HTML-страницы? - PullRequest
16 голосов
/ 01 мая 2011

Привет! Я использую плагин для миниатюр, чтобы получить ширину и высоту изображения, теперь я хочу определить отступ тега img, используя полученную высоту из плагина для миниатюр, например:

<img style="padding-top: {{ img.height / 2 }}" src=""/>

Но я получилошибка здесь, Django не позволяет рассчитать, как это?

Ответы [ 4 ]

28 голосов
/ 01 мая 2011

К сожалению нет. Вам нужно использовать фильтры, например, встроенный add:

{{ img.height|add:1 }}

Однако div нет; Вы можете реализовать это самостоятельно, хотя:

from django import template
register = template.Library()

@register.filter
def div( value, arg ):
    '''
    Divides the value; argument is the divisor.
    Returns empty string on any error.
    '''
    try:
        value = int( value )
        arg = int( arg )
        if arg: return value / arg
    except: pass
    return ''

Использование будет аналогичным, т. Е .:

{{ img.height|div:2 }}
4 голосов
/ 27 января 2014

Существует пакет Python, который предоставляет базовую математику для шаблонов Django: https://pypi.python.org/pypi/django-mathfilters

С этим вы можете сделать это:

{% load mathfilters %}
<img style="padding-top: {{ img.height|div:2 }}" src=""/>
3 голосов
/ 01 мая 2011

Иногда у вас просто есть , чтобы сделать это в шаблоне.Следующая DjangoSnippet прекрасно работает.Хотя вы можете злоупотреблять им, бывают случаи, когда он делает Life Simpler®.

ExprTag - вычисление выражения python и сохранение результата в переменную

Примечание: не проверенов 1.3, но до этого прекрасно работает.

0 голосов
/ 21 января 2019

Для CSS, как в вашем примере, вы можете использовать calc ().

<img style="padding-top: calc({{ img.height }} / 2)" src=""/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...