将两个URL路由到相同的功能

时间:2019-04-15 12:21:02

标签: python-3.x flask

我正在使用Flask 1.0.2,并且试图将两个URL路由到同一功能。

我要使用相同功能的两个URL是:

/alerts/<string:first_property>/<string:first_value>/<string:manufacturer_value>
/alerts/<string:first_property>/<string:first_value>/<string:manufacturer_value>/<string:category_value>

我曾尝试在函数中将category_value的值设置为None,但是当尝试访问第一个URL时,我会收到此错误。

    filters['Category'] = category_number[category_value]
KeyError: None

完整代码:

@app.route('/alerts/<string:first_property>/<string:first_value>/<string:manufacturer_value>', methods=['GET'])
@app.route('/alerts/<string:first_property>/<string:first_value>/<string:manufacturer_value>/<string:category_value>', methods=['GET'])
def category(first_property,first_value, manufacturer_value,category_value=None):
    kpi = 'kpi'
    hanaview = 'hanaview'
    filters = {'CalYear': 2015, 'CalQuarter': (1, 3)}
    filters['Category'] = category_number[category_value]
    #print(category_number[category_value])
    filters['ManufacturerDescription'] = manufacturer_value
    progression = ['CategoryDescription','SubcategoryDescription']
    if first_property == 'Hub':
        progression.insert(0,'Country')
    if first_property == 'Division':
        progression.insert(0, 'Hub')
    alert_tree = get(kpi, hanaview, filters, progression, first_property, first_value)
    tree = alert_tree.get_tree()
    return jsonify(tree), status.HTTP_201_CREATED

1 个答案:

答案 0 :(得分:1)

您得到的错误与烧瓶路由无关。您正在正确执行烧瓶路由。 KeyError即将到来是因为您的category_number变量没有键值等于None的值。我建议您使用:

filters['Category'] = category_number.get(category_value)

如果在None词典中找不到特定条目,则默认为category_number