Dynamically nested blueprint routing in Flask

Viewed 131

We are looking to achieve a routing like /dens/<den_id>/posts/<post_id>.

So, we have an application factory where we define...

from . import dens
from . import posts

dens.bp.register_blueprint(posts.bp)
app.register_blueprint(dens.bp)

and in dens.py we have

bp = Blueprint('dens', __name__, url_prefix='/dens')
# Here we manage all of the den related blueprints, etc...

and in posts.py we have a blueprint for managing all the post related content, such as creating, updating or deleting new posts that are associated to a specific den_id.

bp = Blueprint('posts', __name__, url_prefix='/posts')

# For example, deleting a post should be routed by
# /dens/<den_id>/posts/<post_id>/delete
@bp.route('/<int:id>/delete', methods=('POST',))
@login_required
def delete(id):
    get_post(id)
    db = get_db()
    db.execute('DELETE FROM posts WHERE id = ?', (id,))
    db.commit()
    return redirect(url_for('dens.index'))

However, this does not allow us to route to /dens/<den_id>/posts/..., just to /dens/posts/....

0 Answers
Related