【WTForms】IntegerFieldを使ってみる
今回は「wtforms」の「IntegerField」を使ってみたいと思います。
IntegerFieldを使ってみる
「Integer」とは「整数」という意味です。
なので「整数」のみ受け取るフォームを作れるはずです。
それでは見ていきましょう。
Flask-WTFについてはこちら。
IntegerFieldをインポートしよう
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import IntegerField
これでいいですね。
クラスを定義しよう
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import IntegerField
-----------------------------------------------------------
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class LoginForm(FlaskForm):
field = IntegerField('テスト')
次に関数を定義します。
関数を定義しよう
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import IntegerField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class LoginForm(FlaskForm):
field = IntegerField('テスト')
-------------------------------------------------------
@app.route('/test', methods=['GET', 'POST'])
def test():
test = LoginForm()
if test.validate_on_submit():
return '<h1>結果は {}.'.format(test.field.data)
return render_template('test.html', test=test)
if __name__ == "__main__":
app.run(debug=True)
「test」関数を定義しました。
それでは「hmtl」の方も作っていきます。
htmlファイルを作成しよう
フォームを作成する「htmlファイル」を作っていきましょう。
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>テスト</h1>
<form method="POST" action="{{ url_for('test') }}">
{{ test.csrf_token }}
{{ test.field.label }}
{{ test.field }}
<div>
{% for error in test.field.errors %}
<span style="color: red;">{{ error }}</span>
{% endfor %}
</div>
<input type="submit" value="送信">
</form>
</body>
</html>
では「整数」のみ受け取るのか、確認してみましょう。
IntegerFieldの確認をしてみよう
「test.py」を実行して、ローカルサーバーにアクセスしましょう。
フォームが無事に出力されました。
「12.34」と入力してみましたが、はじかれましたね。
一応「あいうえお」という文字でも試してみました。
それでは「整数」を入力してみます。
「1234」は「整数」なので受け取ってくれたようです。
まとめ
「IntegerField」を試してみました。
これまで「StringField」と「PasswordField」にも触れました。
まだまだ種類がありそうなので、色々と確認していきましょう。
それではまた。