2016-10-03 92 views
-2

我使用的瓶上的Python 2.7,我想返回一個值作爲JSON值,我試圖做到這一點,因爲這,Python'dict'對象不可調用?

user_id = 100 
    return_id = {} 
    return_id['user'] = user_id 

    return return_id 

但是我發現了以下錯誤,

下面是完整的回溯,

127.0.0.1 - - [03/Oct/2016 15:04:16] "POST /add_new_patient HTTP/1.1" 500 - 127.0.0.1 - - [03/Oct/2016 15:04:30] "OPTIONS /add_new_patient HTTP/1.1" 200 - [2016-10-03 15:04:30,199] ERROR in app: Exception on /add_new_patient [POST] Traceback (most recent call last): File "/mnt/663E60F33E60BE25/Users/acer/Documents/code/thalback/venv/local/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app response = self.full_dispatch_request() File "/mnt/663E60F33E60BE25/Users/acer/Documents/code/thalback/venv/local/lib/python2.7/site-packages/flask/app.py", line 1642, in full_dispatch_request response = self.make_response(rv) File "/mnt/663E60F33E60BE25/Users/acer/Documents/code/thalback/venv/local/lib/python2.7/site-packages/flask/app.py", line 1746, in make_response rv = self.response_class.force_type(rv, request.environ) File "/mnt/663E60F33E60BE25/Users/acer/Documents/code/thalback/venv/local/lib/python2.7/site-packages/werkzeug/wrappers.py", line 847, in force_type response = BaseResponse(*_run_wsgi_app(response, environ)) File "/mnt/663E60F33E60BE25/Users/acer/Documents/code/thalback/venv/local/lib/python2.7/site-packages/werkzeug/test.py", line 871, in run_wsgi_app app_rv = app(environ, start_response) TypeError: 'dict' object is not callable

+0

該代碼沒有任何問題。你能爲你的問題添加更多的細節嗎? –

+0

我試過你的代碼,它完美的作品。你的代碼中有沒有其他地方可以稱爲字典? – MMF

+0

做json.dumps()如果它是ajax調用。 –

回答

6

雖然它的確定,從燒瓶處理器與json.dumps返回一個字符串,首選的方法是使用jsonify,這增加了正確的Content-Type並接受各種參數,例如您可以撥打電話:

return jsonify(user=100) 
+0

嗨,當我嘗試運行正確的代碼它不返回任何輸出,'''返回jsonify(user = user_id)1'''它不會返回任何東西。但是'''return jsonify(user ='text')'''返回值 – rksh

+0

@rksh我認爲在你的commend中後面的'1'是一個錯字? – bereal

+0

抱歉是錯字,修復和工作感謝:) – rksh

2

I am using Flask on python 2.7 and I want to return a value as a json value

不必返回一個JSON字符串

您正在返回一個python對象。當Flask 看到是一個python對象時,它會嘗試調用它。當你返回一個字典時,它假定它是可調用的並且試圖調用它。

你需要做的是:

import json 

def your_function(..): 
    ... 
    return json.dumps(return_id) 

PS:在他的回答@bereal作爲正確地指出,上述方法不會在響應中添加Content-Type: application/json頭。如他的回答中所示,您需要使用jsonify(..)