【发布时间】:2012-01-16 21:19:24
【问题描述】:
我注意到有内置的add 过滤器,但我找不到divide。
我是 Django 新手,不确定是否有这样的过滤器。
【问题讨论】:
我注意到有内置的add 过滤器,但我找不到divide。
我是 Django 新手,不确定是否有这样的过滤器。
【问题讨论】:
没有。但如果你是一个小黑客......
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 分钟内创建一个过滤器来划分
【讨论】:
widthratio 返回一个字符串,您需要将其转换为整数,以便它在比较中工作。这样做的一种好方法是:stackoverflow.com/a/7405779/5421745
使用自定义过滤器:
register = template.Library()
@register.filter
def divide(value, arg):
try:
return int(value) / int(arg)
except (ValueError, ZeroDivisionError):
return None
【讨论】:
def divide(value, arg): return (int(value) / int(arg)) if int(arg)!=0 else 0
【讨论】:
我会使用自定义模板,但如果您不想使用,可以使用内置标签的 widthratio,
{% widthratio request.session.get_expiry_age 3600 1 %}
另一个例子
{% widthratio value 1150000 100 %}
语法:
{% widthratio parm1 parm2 parm3 %}
所以基本上它用于缩放图像,但您可以将其用于分割。它的作用是:parm1/parm2 * parm3。
希望这会有所帮助,更多关于 widthratio here.
【讨论】:
查看http://djangosnippets.org/snippets/2424/
希望对你有所帮助。
【讨论】:
你可以使用divisibleby
如果值可以被参数整除,则返回 True。
例如:
{{ value|divisibleby:"3" }}如果值为 21,则输出为 True。
你可以看到django docs
【讨论】: