tengo las siguientes rutas frasco y un ayudante de encargo:Frasco - decorador de costumbre rompe el enrutamiento
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")
yo esperaría una solicitud GET a/de prueba para volver algo así como {"result":"Test success"}
pero ese no es el caso. En cambio, cualquier solicitud parece coincidir con la última ruta, es decir, home
. ¿Por qué?
Me pregunto si esto se debe a alguna falta de aislamiento entre las diferentes llamadas al json_response
?
Gracias de antemano.
'code = ret [0]; resp = ret [1] 'sería más nítido como' code, resp = ret', y 'resp = ret [0]' as 'resp, = ret' (aunque creo que todavía no es la forma en que te gustaría usarlo) , su función necesitaría 'return {},' en lugar de 'return {}'). Más allá de eso, me parece correcto. –
Solo supongo que la firma de la función está rota, es posible que desee probar [functools.wraps] (http://docs.python.org/library/functools.html#functools.wraps). – Vidul
Quiero ver la respuesta a esto –