flask url 匹配问题

2017-08-25 11:30:54 +08:00
 hagezhou

初学 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 那就肯定报错了,所以有什么办法能把后面所有的内容拿到吗?

4151 次点击
所在节点    Flask
8 条回复
John60676
2017-08-25 12:00:29 +08:00
还能有这种操作,关注一下,看看有没有 dalao 能解决
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
2017-08-25 12:07:45 +08:00
试试这样:

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

#2 的做法是对的,我没想到多级的问题
另外,我居然收不到你们的回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX