如何使用Python获取POST参数?

时间:2015-08-15 08:20:56

标签: python python-3.x iis post

我想从不同的位置调用我的Python脚本(FIY:我将在稍后的paypal注册过程中调用它)。

我的配置:我在AmazonWebServices上运行我的网站。 IIS8。 Python3

我用这个简单的HTML文件调用我的python:

<form role="form" action="http://www.mywebsite.nz/cgi-bin/mypythonfile.py" method="post">

    <label for="person_name">Person name</label>                    
    <input id="person_name" type="text" name="person_name">

    <label for="email_address">Email address</label>                    
    <input id="email_address" type="text" name="email_address">

    <button id="submit_button" type="submit" >submit</button>

</form>

以下是mypythonfile.py中的内容:

import cgi, cgitb


#Create instance of FieldStorage
form = cgi.FieldStorage() 
cgitb.enable()


#Here I will collect all parameters
variable = ""
value = ""
allFields = ""
for key in form.keys():
    variable = str(key)
    value = str(form.getvalue(variable))
    allFields += variable + ":" + value + "   "

print(allFields)

但我得到的结果是空值:

<email_address>:<None>  <person_name>:<None>

P.S。从HTML文件所在的同一地方调用.py时,一切都很完美。当我从外部HTML调用.py文件时会发生问题。

我该如何解决? (也许这是我必须添加的某种配置,例如IIS?)

1 个答案:

答案 0 :(得分:2)

您将其作为POST发送。要获取POST超全局变量,请尝试替换:

form = cgi.FieldStorage()

用这个:

form = cgi.FieldStorage(environ="post")

或者你可以试试这个:

import sys, urllib
query_string = sys.stdin.read()
multiform = urllib.parse.parse_qs(query_string)

现在你可以使用它:

multiform["email_address"]