带空参数的Flask路由URL

带空参数的Flask路由URL,flask,Flask,如何使用空参数路由URL 100美元的JFK-LAX作品:/username=Bob/flight\u search/org=JFK&dst=LAX&price=100/ JFK-(anywhere)对于$100抛出404错误:/username=Bob/flight\u search/org=JFK&dst=&price=100/ 没有任何值的dst=&似乎是导致问题的原因 @app.route('/username=<username>/flight_search/org=<

如何使用空参数路由URL

100美元的JFK-LAX作品:
/username=Bob/flight\u search/org=JFK&dst=LAX&price=100/

JFK-(anywhere)对于$100抛出404错误:
/username=Bob/flight\u search/org=JFK&dst=&price=100/

没有任何值的
dst=&
似乎是导致问题的原因

@app.route('/username=<username>/flight_search/org=<org>&dst=<dst>&price=<price>/')
def flights(username, org, dst, price):
    flights = Flights.query.filter_by(org=org, dst=dst, price=price)
    return render_template('search_results.html', data=flights)
@app.route('/username=/flight\u search/org=&dst=&price=/'))
def航班(用户名、组织、dst、价格):
flights=flights.query.filter_by(org=org,dst=dst,price=price)
返回渲染模板('search\u results.html',data=flights)
 > p>而不是使用此数据通过,应考虑解析URL PARAMs。因此,请求URL看起来更像:

example.com/flight_search/?username=foo&org=bar&dst=&price=123
如果未设置值,函数
request.args.get()
将返回
None
。在的帮助下,您可以创建字典
filter\u data
,而不使用这些
None
值,并在
filter\u by
函数中解包:

@app.route('/flight_search/')
def flights():

    incoming_data['username'] = request.args.get('username')
    incoming_data['org'] = request.args.get('org')
    incoming_data['dst'] = request.args.get('dst')

    # This also supports defaults:
    incoming_data['price'] = request.args.get('price', default=100)

    filter_data = {key: value for (key, value) in incoming_data.items()
               if value}

    flights = Flights.query.filter_by(**filter_data)

    return render_template('search_results.html', data=flights)

<>而不是使用传递这些数据,您应该考虑解析URL PARAMs。因此,请求URL看起来更像:

example.com/flight_search/?username=foo&org=bar&dst=&price=123
如果未设置值,函数
request.args.get()
将返回
None
。在的帮助下,您可以创建字典
filter\u data
,而不使用这些
None
值,并在
filter\u by
函数中解包:

@app.route('/flight_search/')
def flights():

    incoming_data['username'] = request.args.get('username')
    incoming_data['org'] = request.args.get('org')
    incoming_data['dst'] = request.args.get('dst')

    # This also supports defaults:
    incoming_data['price'] = request.args.get('price', default=100)

    filter_data = {key: value for (key, value) in incoming_data.items()
               if value}

    flights = Flights.query.filter_by(**filter_data)

    return render_template('search_results.html', data=flights)


是的,这太完美了!甚至回答了按函数将参数解包到筛选器_的最佳方法。谢谢是的,这太完美了!甚至回答了按函数将参数解包到筛选器_的最佳方法。谢谢