
ファイル構成
ファイル名 | 内容 |
app.py | デコレータを設定 GETリクエストのパラメータを取得する request.args.key(‘value’) or (‘value’, ‘default vlaue’) |
index.html | クエストリンクのリンクを設定する ?present_no=1 |
result.html | 選択した結果を表示する |
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パラメータがない場合のデフォルト値を指定する |
app.py
Without error check
@app.route('/result')
def result():
presents = { '1' : 'Stratcaster', '2' : 'Telecaster', '3' : 'Les Paul', '4' : 'ES-335'}
#present_no = request.args['present_no']
#present_no = request.args.get('present_no')
present_no = request.args.get('present_no', '')
return render_template('result.html', present=presents[present_no])
- 上記以外の数字が選択された場合 keyError になる。
- request.args.get(‘value’, ‘default value’) > valueが適切でない場合default valueを返す
With error check
@app.route('/result')
def result():
presents = { '1' : 'Stratcaster', '2' : 'Telecaster', '3' : 'Les Paul', '4' : 'ES-335'}
#present_no = request.args['present_no']
present_no = request.args.get('present_no')
#present_no = request.args.get('present_no', '')
if present_no not in ('1', '2', '3', '4'):
return render_template('result_err.html', error_no=present_no)
else:
return render_template('result.html', present=presents[present_no])
- 上記以外の数字が選択された場合 result_err.html を引数error_noと一緒に返す
- request.args.get(‘value’) > valueが適切でない場合noneを返す
- if文によるクエストリングの値チェック
index.html
<body>
<h1>{{ title }}</h1>
<p> Select a number to get a present! </p>
<ul>
<li><a href="/result?present_no=1">No.1</a></li>
<li><a href="/result?present_no=2">No.2</a></li>
<li><a href="/result?present_no=3">No.3</a></li>
<li><a href="/result?present_no=4">No.4</a></li>
</ul>
</body>

result.html
<body>
<h1>Result</h1>
<p>Congrats! , you got a <strong> {{ present }} </strong>.</p>
<p><a href="/">Back</a></p>
</body>

result_err.html
<body>
<h1>Error Result</h1>
<p>
Your input is <strong> {{ error_no }} </strong>.<br>
Wrong number was input.
</p>
<p><a href="/">Back</a></p>
</body>
