ho i seguenti itinerari pallone e un aiutante personalizzato:Flask - decoratore personalizzato interrompe il routing
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")
mi sarei aspettato una richiesta GET a/test per tornare qualcosa di simile {"result":"Test success"}
ma non è questo il caso. Invece, qualsiasi richiesta sembra corrispondere all'ultima rotta, ad esempio home
. Perché?
Mi chiedo se questo è causato da una mancanza di isolamento tra le diverse chiamate a json_response
?
Grazie in anticipo.
'code = ret [0]; resp = ret [1] 'sarebbe più ordinato come' code, resp = ret' e 'resp = ret [0]' come 'resp, = ret' (anche se penso che non sia ancora come lo si vorrebbe usare , la tua funzione dovrebbe 'return {},' piuttosto che 'return {}'). Oltre a ciò, mi sembra corretto. –
Solo un'ipotesi - la firma della funzione è interrotta, si consiglia di provare [functools.wraps] (http://docs.python.org/library/functools.html#functools.wraps). – Vidul
Voglio vedere la risposta a questo –