Best Flask open-source libraries and packages

Flask blueprints

Register all Flask Blueprints (including nested) from a package directory.
Updated 1 month ago

Flask Blueprint Autoimporter

flask-blueprints will import and register all nested Flask Blueprints under a given package directory.

Synopsis

Register all Flask Blueprints (including nested) from a package directory.

Usage

Create an empty package app.blueprints and register your blueprints:

from flask import Flask
from flask_blueprints import register_blueprints


app = Flask(__name__)
register_blueprints(app, 'app.blueprints')

Blueprints can now be placed under this package, as such:

.
└── app
    ├── blueprints
    │   ├── account
    │   │   ├── account.py
    │   │   ├── contact
    │   │   │   ├── contact.py
    │   │   │   └── __init__.py
    │   │   └── __init__.py
    │   ├── api
    │   │   ├── account
    │   │   │   ├── account.py
    │   │   │   ├── contact
    │   │   │   │   ├── contact.py
    │   │   │   │   └── __init__.py
    │   │   │   └── __init__.py
    │   │   ├── __init__.py
    │   │   └── user
    │   │       ├── __init__.py
    │   │       └── tribute.py
    │   ├── __init__.py
    │   └── project
    │       ├── documents.py
    │       ├── __init__.py
    │       ├── project.py
    │       └── search.py
    └── __init__.py

Blueprint __init__.py files should look something like the following:

from flask import Blueprint


bp = Blueprint('project', __name__)
from . import documents
from . import project
from . import search

(Note that the top-level app/blueprints/__init__.py is not a blueprint package, and therefore should not have a blueprint defined.)

The blueprint files themselves can then define the routes. For example:

from flask import redirect, url_for
from . import bp

@bp.post('/project/<int:project_id>/store')
def store(project_id):
	# ...
	return redirect(url_for('project.show', project_id=project_id))

If the blueprint variable is not bp, then this can be customised:

register_blueprints(app, 'app.blueprints', bp='bp')

Further Reading

Tags blueprint