You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask Jinja2中如何使用url_for生成含多个斜杠的路由URL

Jinja2模板中url_for生成多层斜杠路径的实现方法

url_for是根据后端注册的路由规则生成对应地址的,要输出带多个斜杠的多层级URL,只要先把后端路由配置正确即可,分两种常见场景处理:

  • 动态多段路径场景
    路由默认的字符串转换器不会匹配斜杠,你需要换成专门支持斜杠识别的path类型转换器定义路由。以Flask框架为例,后端路由写法:
    # 用path类型接收带斜杠的多段路径参数
    @app.route('/image/<path:resource_path>')
    def image(resource_path):
        # 写对应业务逻辑即可,当resource_path值为"png/large"时,匹配的就是/image/png/large路径
        return target_resource
    
    模板里调用url_for时,把多段路径作为参数传给路由定义的形参就行:
    {{ url_for('image', resource_path='png/large') }}
    
    渲染后输出的地址就是你需要的/image/png/large格式。
  • 固定多段路径场景
    如果目标多层地址是固定不变的,直接在定义路由的时候写全完整路径,给对应处理函数设置独立端点名即可:
    # 定义路由时直接写全多层路径
    @app.route('/image/png/large')
    def large_png_image():
        # 写该路径对应的业务逻辑
        return large_png_resource
    
    模板里直接传入对应端点名称调用:
    {{ url_for('large_png_image') }}
    
    渲染后直接输出固定的多层级目标地址。

踩坑提醒:别用默认的<string:xxx>转换器接收带斜杠的路径参数,它的匹配规则是碰到斜杠就截断,传多段路径会直接触发404路由匹配错误,必须用<path:xxx>转换器才能正确识别包含斜杠的参数内容。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:57:19