Python'dict'对象不可调用?

2024-09-29 19:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python2.7上使用Flask,我想返回一个json值,我试图这样做

    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


Tags: inidappvenvresponseliblocalsite
2条回答

虽然可以用json.dumps从Flask处理程序返回字符串,但首选的方法是使用^{},它添加正确的Content-Type,并接受各种参数,例如,您只需调用:

return jsonify(user=100)

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)

注:正如@bereal在他的回答中正确指出的,上述方法不会在响应中添加Content-Type: application/json头。你应该使用jsonify(..),如他的回答所示。

相关问题 更多 >

    热门问题