2016-05-02 14 views
1

現在、私のウェブサイトには2つのドロップダウンボックスがあり、フォーム提出時に値が2つのURLパラメータ "myState"と "myShelter"に変換されます。たとえば:Flask/Python 3のURLで欠落しているパラメータを処理する方法

https://www.atweather.org/forecast?myState=CT&myShelter=181

私は今、3番目のボックスを追加していると「myTrail」と呼ばれる第3の対応するパラメータが存在します。私の質問はこれです:誰かが直接2つのパラメータだけのURLを提出すると、ブラウザは間違った要求でエラーにならないようにするにはどうしたらいいですか? 「myState」と「myShelter」が選択されたようにユーザーにページを表示させたいが、「myTrail」は選択されていないままにしておきたい。

私はherehereと考えましたが、これは私が求めているのと全く同じ状況ではないと思います。私はPython 3の下でFlaskを使用していますが、現在このルートを以下のように処理しています。

@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... 

ありがとうございました!

+1

私の質問が上記の質問の重複であるとは思わない。私は 'dict'メソッド' get'を利用することが私にとって有用かもしれませんが、私の質問の文脈はそのスレッドには全く存在しません。 –

+0

'request.args'はdictサブクラスです。他のdictと同じように、エラーを発生させずに値を取得しようとする場合は、 'get'を使用します。あなたがフラスコを使用しているという事実は、実際には関係がありません。以下の答えは他の答えと同じです。 – davidism

+0

これらのパラメータをview関数に追加することは重要ではないことに注意してください。パラメータは、取得されたurl値から満たされ、クエリargではなく埋められます。 – davidism

答えて

1

request.args.get()メソッドを使用すると、引数があれば取​​得できます。

# 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') 

この後、値を処理して必要な方法で戻します。

関連する問題