存在一个非常特殊的问题,调用form.has_key()。代码如下:
import cgi
import cgitb
cgitb.enable()
form = cgi.FieldStorage()
if form.has_key("token"):
token = str(form["token"].value)
如果我正确阅读它,则表示表单没有has_key属性:
=> 36 if form.has_key("token"):
37 token = str(form["token"].value)
38 if "tokens." in hostname:
form = FieldStorage(None, None, [MiniFieldStorage('token', 'abcxyz')]), form.has_key undefined
/usr/lib/python3.6/cgi.py in __getattr__(self=FieldStorage(None, None, [MiniFieldStorage('token', 'abcxyz')]), name='has_key')
588 def __getattr__(self, name):
589 if name != 'value':
=> 590 raise AttributeError(name)
591 if self.file:
592 self.file.seek(0)
builtin AttributeError = <class 'AttributeError'>, name = 'has_key'
AttributeError: has_key
args = ('has_key',)
with_traceback = <built-in method with_traceback of AttributeError object>
作为一种解决方法,我正在这样做,效果很好:
import os
uri = os.environ.get('REQUEST_URI', '/')
if "?token=" in uri:
token = str(form["token"].value)
系统信息:Ubuntu 18.04.4,Python 3.6.9,NGinx 1.14.0