文件名mypage.py
Python代码
form = cgi.FieldStorage()
name = form.getfirst('name', 'empty')
id = form.getfirst('id', 'empty')
print """\
Content-Type: text/html\n
<html>
<body>
<p>Name: "%s"</p>
<p>ID: "%s"</p>
</body>
</html>
""" % (name, id)
同一文件中的 HTML
<form name="frm" method="post" action="mypage.py?id=33">
<input type="text" name="name" value="MyName" />
<input type="Submit" id="btn" value="Send" />
提交表单后(按“发送”按钮),我可以看到带有以下输出的 URL
localhost:8000/cgi-bin/mypage.py?id=33
Name: "empty"
ID: "33"
如果我将表单方法 POST 更改为 GET
<form name="frm" method="get" action="mypage.py?id=33">
然后我可以看到带有以下输出的这个 URL
localhost:8000/cgi-bin/mypage.py?name=MyName
Name: "MyName"
ID: "empty"
我不明白为什么我没有通过 POST 方法接收到文本字段值?为什么我无法使用 GET 方法接收查询字符串中的 id 值?
它是简单的 python 页面,没有任何框架。顺便说一句,我正在使用从 here 下载的“python-bugzilla 0.8.0”但我认为我给出的代码只是一个简单的页面,与这个包无关。
如有任何帮助,我们将不胜感激。
提前致谢
最佳答案
您的 GET 是正确的:
<form name="frm" method="get" action="mypage.py?id=33">
但您的 POST 不是:
<form name="frm" method="post" action="mypage.py?id=33">
您不能将 GET 样式变量 (?id=33) 添加到 POST 的操作中。应该是:
<form name="frm" method="post" action="mypage.py">
<input type="hidden" name="id" value="33">
See HTTP Methods: GET vs. POST :“查询字符串(名称/值对)在 GET 请求的 URL 中发送”和“查询字符串(名称/值对)在 POST 请求的 HTTP 消息正文中发送”。
不遵守这些规则会导致您所看到的意外结果。
关于python - Python中GET和POST方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516315/