Flask:如果路径是目录或文件,则处理捕获所有不同的 url

2024-01-04

如何制作一条捕获所有路径,仅处理目录和处理文件的路径?

下面是一个简单的例子

from flask import Flask
app = Flask(__name__)

@app.route('/foo')
def foo_file():
    return 'Queried: foo file'

@app.route('/foo/')
def foo_dir():
    return 'Queried:  foo dir'

@app.route('/<path:path>')
def file(path):
    return 'Queried file: {0}'.format(path)

@app.route('/')
@app.route('/<path:path>/')
def folder(path):
    return 'Queried folder: {0}'.format(path)

if __name__ == '__main__':
    app.run()

当我访问时http:\\127.0.0.1:5000\foo它调用foo_file()并为http:\\127.0.0.1:5000\foo\它调用foo_dir()。但查询http:\\127.0.0.1:5000\bar and http:\\127.0.0.1:5000\bar\都打电话file()。我怎样才能改变这一点?

我知道我可以检查尾部斜杠并手动重新路由,我只是想知道是否还有其他方法。


你可以这样做...

@app.route('/<path:path>')
def catch_all(path):
    if path.endswith('/'):
        return handle_folder(path)
    else:
        return handle_file(path)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask:如果路径是目录或文件,则处理捕获所有不同的 url 的相关文章

随机推荐