Bootstrap-Flask
Bootstrap-Flask is a collection of Jinja macros for Bootstrap 4 & 5 and Flask. It helps you to render Flask-related data and objects to Bootstrap markup HTML more easily:
- Render Flask-WTF/WTForms form object to Bootstrap Form.
- Render data objects (dict or class objects) to Bootstrap Table.
- Render Flask-SQLAlchemy
Paginationobject to Bootstrap Pagination. - etc.
Installation
$ pip install -U bootstrap-flask
Example
Register the extension:
from flask import Flask
# To follow the naming rule of Flask extension, although
# this project's name is Bootstrap-Flask, the actual package
# installed is named `flask_bootstrap`.
from flask_bootstrap import Bootstrap5
app = Flask(__name__)
bootstrap = Bootstrap5(app)
Assuming you have a Flask-WTF form like this:
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(1, 20)])
password = PasswordField('Password', validators=[DataRequired(), Length(8, 150)])
remember = BooleanField('Remember me')
submit = SubmitField()
Now with the render_form macro:
{% from 'bootstrap5/form.html' import render_form %}
<html>
<head>
<!-- Bootstrap CSS -->
</head>
<body>
<h2>Login</h2>
{{ render_form(form) }}
<!-- Bootstrap JS -->
</body>
</html>
You will get a form like this with only one line code (i.e. {{ render_form(form) }}):
When the validation fails, the error messages will be rendered with proper style:
Read the Basic Usage docs for more details.
Live demo
https://bootstrap-flask-example.azurewebsites.net/
Donate
If you find Bootstrap-Flask useful, please consider donating today. Your donation keeps Bootstrap-Flask maintained and updated with Bootstrap.
Links
Notes for Bootstrap 4 & 5 support
The Bootstrap 5 support is added in Bootstrap-Flask 2.0 version. Now you can use the separate extension class for different Bootstrap major versions.
For Bootstrap 4, use the Bootstrap4 class:
from flask_bootstrap import Bootstrap4
# ...
bootstrap = Bootstrap4(app)
and import macros from the template path bootstrap4/:
{% from 'bootstrap4/form.html' import render_form %}
For Bootstrap 5, use the Bootstrap5 class:
from flask_bootstrap import Bootstrap5
# ...
bootstrap = Bootstrap5(app)
and import macros from the template path bootstrap5/:
{% from 'bootstrap5/form.html' import render_form %}
The Bootstrap class and bootstrap/ template path are deprecated since 2.0
and will be removed in 3.0.
Migration from Flask-Bootstrap
If you come from Flask-Bootstrap, check out this tutorial on how to migrate to this extension.
Contributing
For guidance on setting up a development environment and how to make a contribution to Bootstrap-Flask, see the development documentation and Flask's contributing guidelines.
License
This project is licensed under the MIT License (see the LICENSE file for
details). Some macros were part of Flask-Bootstrap and were modified under
the terms of its BSD License.
Release files for Bootstrap-Flask 2.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bootstrap_flask-2.6.0.tar.gz | 4.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bootstrap_flask-2.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.2 MB
Release files / bootstrap_flask-2.6.0.tar.gz
| Download URL | bootstrap_flask-2.6.0.tar.gz |
|---|---|
| Size | 4.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2b0849f77a743e117716a75406b0312f0783658589519b0e922054bfb3102b9f
|
|
BLAKE2b-256 checksum How to use checksums |
0086bea605321c923d9b65f33434c97adaf8e39b6a76e7af081ed638f2ecf072
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 23, 2026.
Transparency logRelease files / bootstrap_flask-2.6.0-py3-none-any.whl
| Download URL | bootstrap_flask-2.6.0-py3-none-any.whl |
|---|---|
| Size | 4.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2a0ff1df295b143020743949419c955de23ffc3465518f4bf5bac32f90deaa52
|
|
BLAKE2b-256 checksum How to use checksums |
1c12627718708a73fcc4ce713651aaad4dd91eb92e4e47b5abaea0848e4778cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 23, 2026.
Transparency log