Django测试变量是否为数字

时间:2016-07-11 12:06:21

标签: django

看起来应该已经涵盖的问题,但是花了一些时间后,我没有找到如何在Django模板中检查变量是否为数字。 像

这样的东西
{% if my_var.isnumeric %}
    # do something
{% endif %}

更新 正如我从下面的讨论中了解到的,似乎没有内置标签来检查这一点,我们最终必须创建自己的模板标签。

2 个答案:

答案 0 :(得分:1)

这有用吗?

{{ value|divisibleby:"1" }}

编辑:不,如果给出了字符串,则会引发异常。

答案 1 :(得分:1)

假设"数字"表示"仅包含数字" (没有小数点,没有减号等)

自定义过滤器是您最好的选择:

from django import template

register = template.Library()


@register.filter(is_safe=True)
def is_numberic(value):
    return "{}".format(value).isdigit()

有关自定义模板过滤器的文档:https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/

模板中的用法:

{% load your_custom_lib %}
...
{% if something|is_numberic %}...

如果将整数视为数字(正数和负数),则函数变为:

try:
    int("{}".format(value))
except ValueError:
    return False
else:
    return True

如果"数字"表示"整数或浮动",然后使用float代替int。但请注意,这也会将-12E3识别为数字,因为:

>>> -12E3
-12000.0