我正在使用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
答案 0 :(得分:1)
您得到的错误与烧瓶路由无关。您正在正确执行烧瓶路由。 KeyError
即将到来是因为您的category_number
变量没有键值等于None
的值。我建议您使用:
filters['Category'] = category_number.get(category_value)
如果在None
词典中找不到特定条目,则默认为category_number
。