V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hagezhou
V2EX  ›  Flask

flask url 匹配问题

  •  
  •   hagezhou · 2017 年 8 月 25 日 · 4586 次点击
    这是一个创建于 3062 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初学 flask,关于 url 的匹配上有个问题

    @app.route("/path/<url_path>") def get_path(url_path): pass

    这样的话通过 request.path 拿到 path 后面一级的内容,比如 url 是 http://127.0.0.1:5000/path/qw request.path 是 /path/qw

    但如果我的 url 是 http://127.0.0.1:5000/path/qw/adfa 那就肯定报错了,所以有什么办法能把后面所有的内容拿到吗?

    8 条回复    2017-08-30 18:03:33 +08:00
    John60676
        1
    John60676  
       2017 年 8 月 25 日
    还能有这种操作,关注一下,看看有没有 dalao 能解决
    TJT
        2
    TJT  
       2017 年 8 月 25 日
    @app.route('/path/<path:path_name>')
    def path(path_name):
    ----return path_name

    Next topic
    jimqlee
        3
    jimqlee  
       2017 年 8 月 25 日
    试试这样:

    @app.route('/path/<x>/<y>')
    @app.route('/path/<x>')
    def get_path(y=None): pass
    hagezhou
        4
    hagezhou  
    OP
       2017 年 8 月 25 日
    @TJT 可以的,多谢
    hagezhou
        5
    hagezhou  
    OP
       2017 年 8 月 25 日
    @jimqlee 你这种应该只支持多一级吧,多两极的话是不是就不可以了?
    xiaozizayang
        6
    xiaozizayang  
       2017 年 8 月 25 日 via Android
    我也是刚学 一点建议 有错勿喷 我觉得可以 但是你的写法要变 不能直接在你这个处理函数上面加 @ app.route 可以在函数里加个参数用来接受 path 然后用 flask 自带的自定义每次请求前的 request 装饰器做中间处理层 引用 requests 获取你要的 path 作为参数传给这个处理函数 就可以了
    John60676
        7
    John60676  
       2017 年 8 月 28 日
    @jimqlee 我猜题主的意思是直接获取后面所有路径,不论多少级
    jimqlee
        8
    jimqlee  
       2017 年 8 月 30 日
    @John60676
    @hagezhou

    #2 的做法是对的,我没想到多级的问题
    另外,我居然收不到你们的回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1144 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:19 · PVG 07:19 · LAX 15:19 · JFK 18:19
    ♥ Do have faith in what you're doing.