python - Python中GET和POST方法的问题

标签 python html

文件名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/

相关文章:

html - 带有省略号和 nowrap 空白的文本换行

html - 创建对象列表并将它们呈现为图 block

Python 3 列表排序与决胜局

python - 在 Python 的列表中查找某个值的第一个和最后一个索引

Python错误: cannot import name cross_validation

javascript - 检查下面是否有 <tr>

python - 使用 Python 将选定的节点名称放入 Nuke 中的列表或元组中

Python - 带参数的存储函数

javascript - 如何在 D3 中为文本 div 的特定部分着色?

html - html 页面大小限制是什么