我想从不同的位置调用我的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?)
答案 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"]