从django模板'int'或'str'中确定值

时间:2012-09-28 06:31:15

标签: python django

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

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

无论'pr'是字符串还是整数,type()函数都返回'unicode'。我该怎么办呢? 感谢

2 个答案:

答案 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)并验证表单以获取错误。