1
0

More than 1 year has passed since last update.

【Flask】request.args実行時のエラー違いを確認する

Posted at

request.argsのエラーの違いをクエストリングを使って確認してみた

GETリクエスト パラメータ パラメータが不適切 パラメータない 説明
request.args['value'] KeyError BadRequestError GETパラメータ(Keyがなければエラーになる)
request.args.get('value') KeyError KeyError none GETパラメータ(KeyがなければNoneを返す)
request.args.give('value', 'default_value') KeyError Default Value GETパラメータがない場合のデフォルト値を指定する

■ request.args[ 'value' ]

app.py
@app.route('/result')
def result():
    # 辞書のKeyは1〜4まで
    presents = { '1' : 'Stratcaster', '2' : 'Telecaster',
                 '3' : 'Les Paul', '4' : 'ES-335'}

    present_no = request.args['present_no']

    return render_template('result.html', present=presents[present_no])

パターン1 : /result?/present_no=

  • keyとなる数字(1〜4)がセットされない場合

スクリーンショット 2022-09-04 13.20.25.png

パターン2 : /result?/present_no=5

  • レンジ外の値(present_no=5)が設定された場合

スクリーンショット 2022-09-04 13.22.47.png

パターン3 : /result?

  • Keyとなるパラメータがない場合

スクリーンショット 2022-09-04 13.21.29.png


■ request.args.get('value')

app.py
@app.route('/result')
def result():
    # 辞書のKeyは1〜4まで
    presents = { '1' : 'Stratcaster', '2' : 'Telecaster',
                 '3' : 'Les Paul', '4' : 'ES-335'}

    present_no = request.args.get('present_no')

    return render_template('result.html', present=presents[present_no])

パターン1 : /result?/present_no=

  • keyとなる数字(1〜4)がセットされない場合

スクリーンショット 2022-09-04 13.20.25.png

パターン2 : /result?/present_no=5

  • レンジ外の値(present_no=5)が設定された場合

スクリーンショット 2022-09-04 13.22.47.png

パターン3 : /result?

スクリーンショット 2022-09-04 14.04.46.png

  • none が返されている

■ request.args.give('value', 'default_value')

app.py
@app.route('/result')
def result():
    # 辞書のKeyは1〜4まで
    presents = { '1' : 'Stratcaster', '2' : 'Telecaster',
                 '3' : 'Les Paul', '4' : 'ES-335'}

    present_no = request.args.get('present_no', '1')

    return render_template('result.html', present=presents[present_no])

パターン1 : /result?/present_no=

  • keyとなる数字(1〜4)がセットされない場合

スクリーンショット 2022-09-04 13.20.25.png

パターン2 : /result?/present_no=5

  • レンジ外の値(present_no=5)が設定された場合

スクリーンショット 2022-09-04 13.22.47.png

パターン3 : /result?

  • デフォルトの仮引数に present_no 1 が設定されているので /result?/present_no=1 と同じ内容が表示される

スクリーンショット 2022-09-04 14.22.14.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0