Наличие очень специфической проблемы, вызывающей 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