flask-debugtoolbar
flask-debugtoolbar copied to clipboard
Registered blueprint name does not match route blueprint name
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 ofurl_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=''),