37

ファイルへのパスをキャプチャしたい単純なFlaskルートがあります。<path>ルールで使用する場合、それは機能しますが、機能し/get_dir/oneません/get_dir/one/twopath='/one/two/etcビュー関数に渡されるように、どのように任意のパスをキャプチャできますか?

@app.route('/get_dir/<path>')
def get_dir(path):
    return path
4

1 に答える 1

75

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

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

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

やなどの他の組み込みコンバーターがあり、より複雑なケースでは独自のコンバーターを作成することもできます。intfloat

于 2013-02-27T16:41:40.067 に答える