По умолчанию большинство элементов в модуле cgi
объединяются os.environ['QUERY_STRING']
и sys.stdin
(в формате, предложенном os.environ['CONTENT_TYPE']
). Таким образом, простым решением было бы изменить os.environ
или, скорее, предоставить альтернативу без строки запроса.
# make a COPY of the environment
environ = dict(os.environ)
# remove the query string from it
del environ['QUERY_STRING']
# parse the environment
form = cgi.FieldStorage(environ=environ)
# form contains no arguments from the query string!
Игнасио Васкес-Абрамс предлагает вообще отказаться от модуля cgi
; современные веб-приложения на python обычно должны соответствовать интерфейсу WSGI . Вместо этого это может выглядеть так:
import webob
def application(environ, start_response):
req = webob.Request(environ)
if req.method == 'POST':
# do something with req.POST
# still a CGI application:
if __name__ == '__main__':
import wsgiref.handlers
wsgiref.handlers.CGIHandler().run(application)