Flask — пользовательский декоратор прерывает маршрутизацию

У меня есть следующие маршруты Flask и пользовательский помощник:

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 к /test вернет что-то вроде {"result":"Test Success"}, но это не так. Вместо этого кажется, что любой запрос соответствует последнему маршруту, т.е. home. Почему?

Интересно, так ли это? вызвано некоторым отсутствием изоляции между различными вызовами json_response?

Заранее спасибо.

10
задан phidah 16 June 2012 в 14:29
поделиться