I\'m still new to Flask, so there may be an obvious way to accomplish this, but I haven\'t been able to figure it out so far from the documentation. My app is divided into s
Here is my workaround:
When importing a blueprint, I define my nested routes:
app.register_blueprint(product_endpoints, url_prefix='/sites//menus//categories//products/')
app.register_blueprint(category_endpoints, url_prefix='/sites//menus//categories/')
app.register_blueprint(menu_endpoints, url_prefix='/sites//menus/')
app.register_blueprint(site_endpoints, url_prefix='/sites/')
And inside the blueprints, I'm reusing route parse functions. For example, in the product_endpoints file:
from category_endpoints import get_category_data
product_endpoints = Blueprint('product_endpoints', __name__)
@product_endpoints.url_value_preprocessor
def get_product_data(endpoint, values):
if 'category_id' in values:
get_category_data(endpoint, values)
product = Product.get_by_id(int(values.pop('product_id')))
if not product:
abort(404)
g.product = product
and in category_endpoints file:
from menu_endpoints import get_menu_data
category_endpoints = Blueprint('category_endpoints', __name__)
@category_endpoints.url_value_preprocessor
def get_category_data(endpoint, values):
if 'menu_id' in values:
get_menu_data(endpoint, values)
category = ProductCategory.get_by_id(int(values.pop('category_id')))
if not category:
abort(404)
g.category = category
etc... With that approach, my blueprint is also usable with direct routes like /products/.
This approach worked for me very well. I hope it can also help you.