HTTPフォームデータは文字列です。Flaskは、クライアントが各値を意図したタイプに関する情報を受け取りません。したがって、すべての値を文字列として解析します。
int(request.form['personId'])
idをintとして取得するために呼び出すことができます。ただし、値がintでない場合はValueError
、ログにaが記録され、Flaskは500応答を返します。また、フォームにキーがない場合personId
、Flaskは400エラーを返します。
personId = int(request.form['personId'])
代わりに、MultiDict.get()
メソッドとパスtype=int
を使用して、値が存在し、intである場合に値を取得できます。
personId = request.form.get('personId', type=int)
personId
これで整数に設定されます。または、 None
フィールドがフォームに存在しないか、整数に変換できない場合。
ルートの例にもいくつかの問題があります。
ルートはreturn
何かする必要があります。そうでない場合、500エラーが発生します。print
コンソールに出力しますが、応答は返されません。たとえば、IDを再度返すことができます。
@app.route('/getpersonbyid', methods = ['POST'])
def getPersonById():
personId = int(request.form['personId'])
return str(personId) # back to a string to produce a proper response
Pythonでは括弧int
は不要であり、この場合、パーサーは無視します。personId
ビューの値で何か意味のあることをしていると思います。そうでなければint()
、値に使用することは少し無意味です。