2016-12-09 10 views
1

最近私のubuntuマシンにwebpyがダウンロードされましたが、現在POST機能に問題があります。ここ は私のコードです:Webpy AttributeError 'header key'

#! /usr/bin/env python 

import web,interface 

urls = (
    '/', 'index' 
) 

class index(object): 
    def POST(self): 
     data = web.input() 
     interface.interfaceModule(data.decider) 
    return "SENT TO INTERFACE" 


if __name__ == "__main__": 
    app = web.application(urls, globals()) 
    app.run() 

インタフェースは、POST値を受け取るだけで、別のクラスで、シリアル経由アルドゥイーノに送信します。ここ

がエラー出力である:指定されたキー、および任意の値と、POST-MAN:

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/web/application.py", line  239, in process 
return self.handle() 
File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 230, in handle 
    return self._delegate(fn, self.fvars, args) 
File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 462, in _delegate 
    return handle_class(cls) 
    File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 438, in handle_class 
    return tocall(*args) 
    File "/var/www/cgi-bin/index.py", line 12, in POST 
    interface.interfaceModule(data.decider) 
    File "/usr/local/lib/python2.7/dist-packages/web/utils.py", line 76, in _ _getattr__ 
    raise AttributeError, k 
AttributeError: 'decider' 

192.168.10.1:52225 - - [09/Dec/2016 19:41:09] "HTTP/1.1 POST /" - 500 Internal Server Error 

Iクロムアプリを使用してPOSTリクエストを送信しました。

+0

を試してみてください。 'データ'の内容を確認するには 'print(data、type(data)、dir(data))'を使います。 – furas

+0

@furus前にオブジェクト値を出力しようとしましたが、それは空です。 "" と入力し、dir()にdecider属性は表示されません。これを修正するにはどうすればいいですか? –

+0

これはあなたが間違ったデータを投稿することを意味します。あなたは値を送信しません。 – furas

答えて

1

このエラーは間違ったリクエストを送信したことを意味します。deciderはあなたのPOSTに送信されません。

は、あなたが `data.decider`を使用しますが、` data`が財産 `decider`を持っていないようだ

import requests 

r = requests.post('http://localhost:8080', data={'decider':'Hello World'}) 

print(r.text) 
+0

ありがとうございました! POST MANとHttpRequestブラウザープラグインを使って、私がこの間に間違っていたことが分かります –

関連する問題