django:如何在模板html页面内进行计算?

时间:2011-05-01 14:25:32

标签: python html django

您好我使用缩略图插件来获取图片的宽度和高度,现在我想使用缩略图插件的高度来定义img标签的填充,如:

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

但我在这里得到了错误,django不允许这样计算吗?

4 个答案:

答案 0 :(得分:28)

不幸的是没有。您需要使用过滤器,例如内置的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 }}

答案 1 :(得分:4)

有一个Python包,为Django模板提供基本数学:https://pypi.python.org/pypi/django-mathfilters

有了这个,你可以这样做:

{% load mathfilters %}
<img style="padding-top: {{ img.height|div:2 }}" src=""/>

答案 2 :(得分:3)

有时您只是 在模板中执行此操作。以下DjangoSnippet效果很好。虽然你可以滥用它,但有时它会让生活更简单。

ExprTag - Calculating python expression and saving the result to a variable

注意:未在1.3中测试过,但在此之前可以正常使用。

答案 3 :(得分:0)

对于CSS(例如您的示例),您可以使用calc()。

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