2013-07-05 41 views
3

documentation說,使用request.get_json(),但會導致服務返回一個錯誤:瓶:request.json工作,但request.get_json()導致錯誤代碼500

Server returned HTTP response code: 500 

調用request.datarequest.json都工作,然而。

堆棧跟蹤:

Traceback (most recent call last): 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/werkzeug/contrib/fixers.py", line 125, in __call__ 
    return self.app(environ, start_response) 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/blake/workspace/starcycle-flask/starcycleweb.py", line 17, in api 
    print request.get_json() 
    File "/home/blake/ves/p27/lib/python2.7/site-packages/werkzeug/local.py", line 336, in __getattr__ 
    return getattr(self._get_current_object(), name) 
AttributeError: 'Request' object has no attribute 'get_json' 

我以爲get_json是爲獲取JSON數據的首選方式。

+0

通過調試模式,它告訴我:'請求'對象沒有屬性'get_json' – kelorek

+0

你可以添加stacktrace給你嗎? – tbicr

+2

您使用的是最新版本的Flask 0.10嗎? 'get_json'被添加,然後,[最近](http://flask.pocoo.org/docs/changelog/#version-0-10) – DazWorrall

回答

9

在Flask/wrappers.py中,方法get_json()被定義爲類Request的方法。

但是,同一個文件仍然包含舊的,不贊成使用的方法json()。如果您有舊版本的燒瓶,那麼a)更新或b)改爲使用request.json()

+1

我剛纔意識到這個問題是什麼 - 我正在使用python請求庫以及flask.request模塊。 python請求庫也有一個response.json()方法,這是我的困惑。/brainfart – kelorek