2

ディレクトリのみを処理し、ファイルを処理するすべてのルートをキャッチするにはどうすればよいですか?

以下は簡単な例です

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と It が呼び出さfoo_file()れ、 for http:\\127.0.0.1:5000\foo\it が呼び出されますfoo_dir()。しかし、クエリhttp:\\127.0.0.1:5000\barhttp:\\127.0.0.1:5000\bar\両方の呼び出し file(). どうすればそれを変更できますか?

末尾のスラッシュを確認して手動で再ルーティングできることはわかっていますが、別の方法があるかどうか疑問に思っていました。

4

1 に答える 1

7

あなたはこれを行うことができます...

@app.route('/<path:path>')
def catch_all(path):
    if path.endswith('/'):
        return handle_folder(path)
    else:
        return handle_file(path)
于 2013-01-21T21:10:34.007 に答える