Skip to content

Registered blueprint name does not match route blueprint name #177

@jdimmerman

Description

@jdimmerman

The blueprint name registered for the app doesn't match that registered for the route.

The app is registered with blueprint name debubtoolbar

module = Blueprint('debugtoolbar', __name__)

But the route is registered with blueprint name _debug_toolbar as implied by the endpoint name _debug_toolbar.static. Thus, in a consuming app, flask.request.blueprint returns _debug_toolbar, which does not exist in flask.current_app.blueprints.

app.add_url_rule('/_debug_toolbar/static/<path:filename>',
                         '_debug_toolbar.static', self.send_static_file)

Three potential fixes - both simple, but may break existing consumers

  • Change the registered BP name to _debug_toolbar
  • Change the endpoint to use the BP name debugtoolbar, and then change the two references of url_for

Ideally in both cases, you'd register the route under the context of the BP to avoid the issue going forward. For example, if you use the second solution

module.add_url_rule('/_debug_toolbar/static/<path:filename>', endpoint="static", view_func=self.send_static_file)

References in url_for, for context:

toolbar.py

self.template_context = {
  'static_path': url_for('debugtoolbar.static', filename='')
}

panels/template.py

'static_path': url_for('debugtoolbar.static', filename=''),

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions