2012-09-28 70 views
2

我在django模板中有一個表單。在從這個表單獲取數據的視圖中,我需要檢查條目是'str'還是'int'。如果它是'str',我不得不提出一個錯誤。但是,當我通過使用檢查條目的類型:從django模板'int'或'str'決定值

pr = request.GET['pr no'] 
print "Type of PR:%s" % type(pr) 

不管「PR」是字符串或整數,式()函數返回「的unicode」的。我該如何解決它? 謝謝

回答

6

那麼,明顯.GET['pr no']總是返回一個Unicode對象然後。

無論該字符串包含一個整數進行測試:

if pr.isdigit(): # ASCII digits 

if pr.isnumeric(): # also Unicode digits 

或者,你可以做

try: 
    int(pr) 
except ValueError: 
    print "PR is not an integer" 

和檢查任何有效的數字:

try: 
    float(pr) 
except ValueError: 
    print "PR is not a number" 
+0

嗨蒂姆,我已經改變var名稱_,請原諒大膽。 – danihp

+0

@danihp:沒問題,你的編輯讓我意識到根本不需要任何任務。 –

1

在html格式中,文本輸入框用於輸入整數值。因此,您在python視圖中獲取的值始終是unicode字符串。

要實現你想要做的事情,你可以使用unicode字符串的.isdigit()方法進行測試。

例子:

>>> x=u'99A' 
>>> x.isdigit() 
False 
>>> x=u'99' 
>>> x.isdigit() 
True 
>>> 
>>> x=u'A99' 
>>> x.isdigit() 
False 
>>> 

如果您正在使用Django的形式,您可能需要使用適當的表單字段(可能IntegerField)和驗證的形式出現錯誤。