带空参数的Flask路由URL
如何使用空参数路由URL 100美元的JFK-LAX作品:带空参数的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=<
/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)
是的,这太完美了!甚至回答了按函数将参数解包到筛选器_的最佳方法。谢谢是的,这太完美了!甚至回答了按函数将参数解包到筛选器_的最佳方法。谢谢