将三个URL路由到单个端点?使用Flask和Jinja2

raj*_*jpy 3 python flask

我需要将三个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 ----
Run Code Online (Sandbox Code Playgroud)

第一个和最后一个URL有效.即,/ items/ - item_name和status将具有默认值.和/ items/some_item_name/unavailable/ - 它使用传递的值.

当我尝试/ items/some_item_name/ - 它失败并出现此错误"TypeError:item_list()只需要2个参数(给定1个)",我理解为函数需要两个参数.这不是正确的做法吗?为什么'status'没有采用默认值'available'.因为当我们发出/ items /时,'item_name'和'status'采用默认值.当使用/ items/some_item_name /时,我期待发生同样的事情.

这里出了什么问题?谢谢你的帮助..

ang*_*lar 5

在函数中使用默认参数:

def items_list(item_name=None, status=None):
Run Code Online (Sandbox Code Playgroud)