【发布时间】:2015-11-23 12:01:26
【问题描述】:
我想从 HTML 表单中获取整数值,我使用了以下 python 代码:
form = cgi.FieldStorage()
if not form.has_key("id"):
error_pop("There is no id in this form","The format of the request is not correct")
id = form["id"].value (*)
在 HTML 文件中,我将输入类型设为number:
id: <input type="number" name="id" /><br />
但是,我从行 (*) 获得的 id 似乎仍然是一个字符串。
如何将其转换为整数?
我尝试使用int(form["id"].value),但python给了我以下错误:
<type 'exceptions.TypeError'>: %d 格式: 需要一个数字, 不是 str args = ('%d 格式: 需要一个数字, 不是 str',) message = '%d 格式: 需要一个数字, 不是 str '
所以,我放弃了使用int()。
如果我在将其解析为int() 之前尝试打印该值,那么我将从浏览器收到内部服务器错误。实际上,如果我更改 python 文件中的某些内容,我总是会收到此错误。我可以从 error_log.log 中看到错误:
/usr/lib/python2.6/cgitb.py:173: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
value = pydoc.html.repr(getattr(evalue, name))
实际上,如果我从error.log grep 今天的时间,那么它就无法显示当前的错误..尽管它确实退出了几个小时前发生的一些错误......
我发现了一些新的东西:只有涉及到“id”的东西,才会出现内部服务器错误。如果我执行id = form["idid"].value 之类的操作,则会出现错误:
<type 'exceptions.TypeError'>: int() argument must be a string or a number, not 'NoneType'
args = ("int() argument must be a string or a number, not 'NoneType'",)
message = "int() argument must be a string or a number, not 'NoneType'"
感谢任何帮助。
【问题讨论】:
-
嗨!你能发布你得到的错误吗?
-
@Littm,您的意思是来自 int(form["id"].value) 的错误?虽然有数百行错误...
-
你提到的错误:
but python gave me tons of errors that I cannot read? -
@Littm,哈,我发现有几百行错误是因为我没有以正确的权限执行python文件,添加sudo python xx.py后,它可以工作。但是字符串问题仍然存在。浏览器端返回的错误是:
: %d format: a number is required, not str args = ('%d format: a number is required, not str',) message = ' %d 格式:需要一个数字,而不是 str' -
@Littm,如果我添加 int(form["id"].value),那么服务器将返回内部服务器错误..