2016-05-23 83 views
2

POST請求我有一個非常簡單的扭曲的腳本,你可以處理POST請求:如何處理扭曲

class FormPage(Resource): 
    isLeaf = True 
    def render_GET(self, request): 
     return b"""<html><body><form method="POST"><input name="form-field" type="text" /></form></body></html>""" 

    def render_POST(self, request): 
     return '<html><body>You submitted: %s</body></html>' % (cgi.escape(request.args["form-field"][0]),) 

factory = Site(FormPage()) 
reactor.listenTCP(80, factory) 
reactor.run() 

但每當我跑這一點,並填寫框,我得到和錯誤:

builtins.KeyError: 'form-field' 

有人能告訴我這是爲什麼嗎?謝謝!!

回答

0

我發現了一個採用溶液request.content.read()

def render_POST(self, request): 
    return '<html><body>You submitted: %s</body></html>' % (request.content.read()) 

它可能不是最好的解決辦法,但它爲我工作。請評論如果你有更好的解決方案,謝謝!

0

找到解決方案。很長一段時間,我在Python3中使用了「O'Reily Twisted」。下面是我工作:

def render_POST(self, request): 
    return_value = "<html><body>You submitted: %s </body></html>" % (cgi.escape(str(request.args[b"form-field"][0], 'utf-8'))) 
    return str.encode(return_value) 

我想第一個原因我有麻煩的是,表單字段都可以在Python代碼中提取是在字節串。只有在我檢查了我認識到的請求參數之後。我想在python2中,它是普通的字符串。