2

我在 django 模板中有一个表单。在从此表单获取数据的视图中,我需要检查条目是“str”还是“int”。如果它是'str',我必须提出一个错误。但是当我使用以下方法检查条目的类型时:

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

无论“pr”是字符串还是整数,type() 函数都会返回“unicode”。我该怎么做?谢谢

4

2 回答 2

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"
于 2012-09-28T06:39:06.993 回答
1

在html表单中,文本输入框用于输入整数值。因此,您在 python 视图中获得的值将始终是 unicode 字符串。

要实现您想要做的,您可以使用.isdigit()unicode 字符串的方法进行测试。

例子:

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

如果您使用 django 表单,您可能希望使用适当的表单字段(可能IntegerField)并验证表单以获取错误。

于 2012-09-28T06:40:22.663 回答