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

flask url 匹配问题

  •  
  •   hagezhou · 2017-08-25 11:30:54 +08:00 · 4150 次点击
    这是一个创建于 2680 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初学 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-08-25 12:00:29 +08:00
    还能有这种操作,关注一下,看看有没有 dalao 能解决
    TJT
        2
    TJT  
       2017-08-25 12:06:22 +08:00
    @app.route('/path/<path:path_name>')
    def path(path_name):
    ----return path_name

    Next topic
    jimqlee
        3
    jimqlee  
       2017-08-25 12:07:45 +08:00
    试试这样:

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

    #2 的做法是对的,我没想到多级的问题
    另外,我居然收不到你们的回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4805 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:09 · PVG 09:09 · LAX 17:09 · JFK 20:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.