Django: как сделать расчет внутри шаблона HTML-страницы?
Привет, я использую миниатюрный плагин, чтобы получить ширину и высоту изображения, теперь я хочу определить прописку тега img, используя полученную высоту из миниатюрного плагина, например:
<img style="padding-top: {{ img.height / 2 }}" src=""/>
Но я получил ошибку здесь, django не позволяет вычислять как это?
Ответы
Ответ 1
К сожалению, нет. Вам необходимо использовать фильтры, такие как 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 }}
Ответ 2
Там есть пакет Python, который предоставляет основные математические параметры для шаблонов Django: https://pypi.python.org/pypi/django-mathfilters
С этим вы можете сделать это:
{% load mathfilters %}
<img style="padding-top: {{ img.height|div:2 }}" src=""/>
Ответ 3
Иногда вам просто нужно сделать это в шаблоне. Следующий DjangoSnippet отлично работает. Хотя вы можете злоупотреблять им, бывают случаи, когда он делает Life Simpler®.
ExprTag - вычисление выражения python и сохранение результата в переменной
Примечание. Не проверено в 1.3, но отлично работает с чем-либо до этого.
Ответ 4
Для CSS, как в вашем примере, вы можете использовать calc().
<img style="padding-top: calc({{ img.height }} / 2)" src=""/>