単純なFlaskファイルへのパスをキャプチャするルートがあります。ルールで_<path>
_を使用すると、_/get_dir/one
_では機能しますが、_/get_dir/one/two
_。_path='/one/two/etc
_がビュー関数に渡されるように、任意のパスをキャプチャするにはどうすればよいですか?
_@app.route('/get_dir/<path>')
def get_dir(path):
return path
_
path
コンバーターを使用して、任意の長さのパスをキャプチャします:<path:path>
はパスをキャプチャし、それをpath
引数に渡します。デフォルトのコンバーターは単一の文字列をキャプチャしますが、スラッシュで停止します。そのため、最初のURLは一致しましたが、2番目のURLは一致しませんでした。
ルートディレクトリ(先頭のスラッシュと空のパス)も一致させる場合は、パス引数のデフォルト値を設定する 別のルールを追加 を実行できます。
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
return path
int
やfloat
などの他の ビルトインコンバーター があり、より複雑なケースでは 独自に書き込む も可能です。