Flask动态嵌套蓝图路由如何实现带<den_id>参数的多级路径
调整方案如下
1. 修改子蓝图注册配置
在将posts蓝图注册到dens蓝图时,额外传入带动态参数den_id的url_prefix,修改后的注册逻辑:
from . import dens from . import posts # 新增带<den_id>的前缀,会自动拼接在dens蓝图前缀和posts蓝图前缀之间 dens.bp.register_blueprint(posts.bp, url_prefix='/<int:den_id>') app.register_blueprint(dens.bp)
2. 调整posts蓝图下的视图函数
路由中新增的den_id动态参数需要在视图函数中声明接收,可根据业务需求选择是否使用该参数。以删除接口为例,修改后代码:
bp = Blueprint('posts', __name__, url_prefix='/posts') # 最终匹配路径为 /dens/<den_id>/posts/<int:id>/delete @bp.route('/<int:id>/delete', methods=('POST',)) @login_required def delete(den_id, id): get_post(id) db = get_db() db.execute('DELETE FROM posts WHERE id = ?', (id,)) db.commit() # 若跳转目标路由需要den_id,可直接传入该参数即可 return redirect(url_for('dens.index'))
补充说明
如果后续需要生成posts蓝图下的路由地址,调用url_for时需要额外传入den_id参数,示例如下:
url_for('dens.posts.delete', den_id=当前分区ID, id=待删除帖子ID)
内容的提问来源于stack exchange,提问作者tsainez
相关产品推荐
相关产品推荐

