Flask-Nav support¶
The Flask-Nav extension allows easily creating navigational structures and Flask-Bootstrap ships with a Bootstrap-compatible renderer for these. Upon initializing an application, Flask-Bootstrap will register the Bootstrap renderer as the default.
Rendering a navbar “just works”, for example
{% block navbar %}
{{nav.mynavbar.render()}}
{% endblock %}
will automatically emit Bootstrap-compatible HTML. A minimal example to generate a working navbar would be:
from flask_nav import Nav
from flask_nav.elements import Navbar, View
nav = Nav()
@nav.navigation()
def mynavbar():
return Navbar(
'mysite',
View('Home', 'index'),
)
# ...
nav.init_app(app)
See the sample application for a more detailed example on navigation.
The BootstrapRenderer¶
The renderer for Bootstrap-specific HTML (available as
flask_bootstrap.nav.BootstrapRenderer) has a few specific features. Namely,
the title attribute of any Navbar can also be
a Link or View.
The title, if not None, will be rendered using the brand classes
(see the Bootstrap docs for details) and if
it has a get_url method, the return value of it will be the link for the
brand text.
Customizing the navbar¶
To modify the output of the BootstrapRenderer, it is possible to subclass
it and register the resulting child class as another renderer. See the
Flask-Nav documentation for more information about that topic.