我有以下瓶路線和一個自定義的助手:瓶 - 定製的裝飾打破了路由
from spots import app, db
from flask import Response
import simplejson as json
def json_response(action_func):
def create_json_response(*args, **kwargs):
ret = action_func(*args, **kwargs)
code = 200
if len(ret) == 2:
code = ret[0]
resp = ret[1]
else:
resp = ret[0]
return Response(
response=json.dumps(resp, indent=4),
status=code,
content_type='application/json'
)
return create_json_response
@app.route('/test')
@json_response
def test():
return 400, dict(result="Test success")
@app.route('/')
@json_response
def home():
return 200, dict(result="Home success")
我希望GET請求/測試返回類似{"result":"Test success"}
但事實並非如此。相反,任何請求似乎都與最後一條路線相匹配,即home
。爲什麼?
我不知道這是否是由於json_response
的不同調用之間缺乏絕緣造成的?
在此先感謝。
'code = ret [0]; resp = ret [1]'作爲'code,resp = ret'和'resp = ret [0]'作爲'resp,= ret'會更整齊一些(儘管我認爲這還不是你想要使用它的方式,你的函數需要'return {},'而不是'return {}')。除此之外,它對我來說看起來是正確的。 –
只是一個猜測 - 函數的簽名被打破,你可能想嘗試[functools.wraps(http://docs.python.org/library/functools.html#functools.wraps)。 – Vidul
我想查看這個 –