ファイルへのパスをキャプチャしたい単純な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