看起来应该已经涵盖的问题,但是花了一些时间后,我没有找到如何在Django模板中检查变量是否为数字。 像
这样的东西{% if my_var.isnumeric %}
# do something
{% endif %}
更新 正如我从下面的讨论中了解到的,似乎没有内置标签来检查这一点,我们最终必须创建自己的模板标签。
答案 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