diff --git a/flask.py b/flask.py index 268dec38..1d0fa852 100644 --- a/flask.py +++ b/flask.py @@ -448,7 +448,7 @@ class Module(_PackageBoundObject): """ def register_rule(state): the_rule = rule - if self.url_prefix: + if state.url_prefix: the_rule = state.url_prefix + rule state.app.add_url_rule(the_rule, '%s.%s' % (self.name, endpoint), view_func, **options) diff --git a/tests/flask_tests.py b/tests/flask_tests.py index d57370f8..8b3f7640 100644 --- a/tests/flask_tests.py +++ b/tests/flask_tests.py @@ -441,6 +441,15 @@ class ModuleTestCase(unittest.TestCase): assert catched == ['before-app', 'before-admin', 'after-admin', 'after-app'] + def test_late_binding(self): + app = flask.Flask(__name__) + admin = flask.Module(__name__, 'admin') + @admin.route('/') + def index(): + return '42' + app.register_module(admin, url_prefix='/admin') + assert app.test_client().get('/admin/').data == '42' + def suite(): from minitwit_tests import MiniTwitTestCase