【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」にも触れました。
まだまだ種類がありそうなので、色々と確認していきましょう。
それではまた。

  • X

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です