3

3 つの URL を単一のビュー関数にマップする必要があります。

@app.route('/items/', defaults={"item_name": "all", "status": "available"}, methods=['GET', 'POST'])
@app.route('/items/<item_name>/')
@app.route('/items/<item_name>/<status>')
def items_list(item_name, status):
    --- code goes here ----

最初と最後の URL が機能します。つまり、/items/ - item_name と status にはデフォルト値があります。および /items/some_item_name/unavailable/ - 渡された値を使用します。

/items/some_item_name/ を試すと、「TypeError: item_list() は正確に 2 つの引数をとります (1 つ指定)」というエラーで失敗します。これは、関数が 2 つのパラメーターを想定しているためです。それは正しい方法ではありませんか?「ステータス」がデフォルト値「利用可能」をとらないのはなぜですか。/items/ を発行すると、'item_name' と 'status' はデフォルト値を取るためです。/items/some_item_name/ を使用すると、同じことが起こると思っていました。

ここで何がうまくいかないのですか?助けてくれてありがとう..

4

1 に答える 1