看起來像一個應該已經被覆蓋的問題,但花了一些時間之後,我沒有找到如何在Django模板中檢查變量是數字。 喜歡的東西Django測試變量是否爲數字
{% if my_var.isnumeric %}
# do something
{% endif %}
UPDATE 當我從下面的討論中瞭解到,人們似乎沒有內置標籤來檢查這一點,我們最終不得不創建自己的模板標籤。
看起來像一個應該已經被覆蓋的問題,但花了一些時間之後,我沒有找到如何在Django模板中檢查變量是數字。 喜歡的東西Django測試變量是否爲數字
{% if my_var.isnumeric %}
# do something
{% endif %}
UPDATE 當我從下面的討論中瞭解到,人們似乎沒有內置標籤來檢查這一點,我們最終不得不創建自己的模板標籤。
假設「數字」的意思是「只包含數字」(沒有小數點,沒有減號,等)
自定義過濾器是你最好的選擇:
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
Emm,@frnhr,我確實假設「數字」可以包含小數點,減號等。我不想尋找定製的解決方案。問題是要確保沒有內置的快捷方式,我不會重新發明輪子:) –
@EdgarNavasardyan沒有內置的解決方案AFAIK,所以我們不會重新發明輪子:) – frnhr
你可以使自己的模板標籤,但機會是,這將只是掩蓋了一些見不得人的邏輯,爲什麼不會是多少? – Sayse
Yeap,我已經掌握了用戶定義模板標籤的技巧。問題是,是否有內置標籤 –
問題是,您爲什麼需要它?爲什麼*不會是數字? – Sayse