如何使用Flask / Python 3处理URL中缺少的参数

How to handle missing parameters in URL with Flask/Python 3

本问题已经有最佳答案,请猛点这里访问。

目前,我的网站有两个下拉框,其值在表单提交时转换为两个URL参数"mystate"和"myshelter"。例如:

https://www.atweather.org/forecast?myState=ct&myshelter=181

我现在添加了第三个框,将有第三个对应的参数"mytrail"。我的问题是:我如何才能使它这样,如果有人直接提交一个只有两个参数的URL,浏览器不会错误地提出一个错误的请求?我想让用户看到页面,就好像选择了"mystate"和"myshelter",但是"mytrail"没有被选中。

我试着到处看看,但我不认为这和我问的情况完全一样。我在python 3下使用flask,目前处理这个路径的方式如下:

1
2
3
4
5
6
7
8
9
10
11
@app.route('/forecast', methods = ['GET'])
def forecast(loc_state = None, loc_id = None):

   """
    Handles rendering of page after a location has been selected
   """

    loc_state = request.args['myState']
    loc_id = int(request.args['myShelter'])

    ...and a bunch of other logic for rendering the page...

提前感谢您的洞察力!


request.args.get()方法允许获取存在的参数。

1
2
3
4
5
# return None if the argument doesn't exist
trail = request.args.get('myTrail')

# return 'x' if the argument doesn't exist
trail = request.args.get('myTrail', 'x')

在此之后,只需处理该值以返回所需的方式。