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

Bin*_*hen 16 html python django

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

<img style="padding-top: {{ img.height / 2 }}" src=""/>
Run Code Online (Sandbox Code Playgroud)

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

Xio*_*ion 29

不幸的是.您需要使用过滤器,例如add内置的过滤器:

{{ img.height|add:1 }}
Run Code Online (Sandbox Code Playgroud)

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 ''
Run Code Online (Sandbox Code Playgroud)

用法类似,即:

{{ img.height|div:2 }}
Run Code Online (Sandbox Code Playgroud)


Wil*_*hes 10

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

有了这个,你可以做到:

{% load mathfilters %}
<img style="padding-top: {{ img.height|div:2 }}" src=""/>
Run Code Online (Sandbox Code Playgroud)


Sco*_*561 5

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

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