tôi có các tuyến đường Flask sau và một helper tùy chỉnh:Flask - tùy chỉnh trang trí phá vỡ tuyến
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")
Tôi mong chờ một yêu cầu GET đến/thử nghiệm để trở lại một cái gì đó giống như {"result":"Test success"}
nhưng đó không phải là trường hợp. Thay vào đó, mọi yêu cầu có vẻ phù hợp với tuyến đường cuối cùng, tức là home
. Tại sao?
Tôi tự hỏi điều này có phải do thiếu sự cách ly giữa các cuộc gọi khác nhau với json_response
không?
Xin cảm ơn trước.
'code = ret [0]; resp = ret [1] 'sẽ được lặp lại như' code, resp = ret', và 'resp = ret [0]' như 'resp, = ret' (mặc dù tôi nghĩ nó vẫn không phải là cách bạn muốn sử dụng nó , hàm của bạn sẽ cần 'return {},' chứ không phải 'return {}'). Ngoài ra, nó có vẻ đúng với tôi. –
Chỉ cần đoán - chữ ký của hàm bị hỏng, bạn có thể thử [functools.wraps] (http://docs.python.org/library/functools.html#functools.wraps). – Vidul
Tôi muốn xem câu trả lời cho giải pháp này –