我真的想與表單數據發送簡單的HTML頁面,用戶用GET獲取POST值,然後收到表單變量與POST。 HTML文件看起來像:不能與cgi.FieldStorage
<HTML>
<title> My Title</title>
<body>
<form method="post" action="http.py">
<input name="Name" type="text"/>
<input name="Submit" type="submit" value="Submit" />
</form>
</body>
</HTML>
下面是python腳本:
import os
import cgi
import sys
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class customHTTPServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
fh=open('index.html','r')
self.wfile.write(fh.read())
return
def do_POST(self):
form = cgi.FieldStorage()
self.send_response(200)
self.end_headers()
self.wfile.write(form['Name'].value)
def main():
try:
server = HTTPServer(('',9111),customHTTPServer)
print 'server started at port 8080'
server.serve_forever()
except KeyboardInterrupt:
server.socket.close()
if __name__=='__main__':
sys.exit(main())
但仍的FieldStorage空所有的時間。我已經試圖檢查self.rfile中的內容,並發現如果我嘗試執行self.rfile.readlines(),瀏覽器卡住,看起來像腳本正在等待數據流的結束。從哪裏我應該採取名稱變量,我是提交與POST?
你提交表單前進入你的輸入領域的一些價值?除非您將'keep_blank_values = True'傳遞給其構造函數,否則'cgi.FieldStorage'不會考慮空字段。 –
當然,我做到了。不能老是搞清楚什麼我真的做錯了。還有self.headers都很好,我可以看到內容類型:應用程序/ x-WWW窗體-urlencoded和其他的東西有,但self.rfile是一個問題。 –
它不是一個CGI腳本。看到我的答案。 – jdi