web-dev-qa-db-ja.com

Flaskルートで任意のパスをキャプチャします

単純なFlaskファイルへのパスをキャプチャするルートがあります。ルールで_<path>_を使用すると、_/get_dir/one_では機能しますが、_/get_dir/one/two_。_path='/one/two/etc_がビュー関数に渡されるように、任意のパスをキャプチャするにはどうすればよいですか?

_@app.route('/get_dir/<path>')
def get_dir(path):
    return path
_
28
Darwin Tech

pathコンバーターを使用して、任意の長さのパスをキャプチャします:<path:path>はパスをキャプチャし、それをpath引数に渡します。デフォルトのコンバーターは単一の文字列をキャプチャしますが、スラッシュで停止します。そのため、最初のURLは一致しましたが、2番目のURLは一致しませんでした。

ルートディレクトリ(先頭のスラッシュと空のパス)も一致させる場合は、パス引数のデフォルト値を設定する 別のルールを追加 を実行できます。

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
    return path

intfloatなどの他の ビルトインコンバーター があり、より複雑なケースでは 独自に書き込む も可能です。

46
moodh