我在django模板中有一个表单。在从这个表单获取数据的视图中,我需要检查条目是'str'还是'int'。如果它是'str',我必须提出错误。但是当我使用以下方法检查条目的类型时:
pr = request.GET['pr no']
print "Type of PR:%s" % type(pr)
无论'pr'是字符串还是整数,type()函数都返回'unicode'。我该怎么办呢? 感谢
答案 0 :(得分: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"
答案 1 :(得分: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
)并验证表单以获取错误。