3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FlaskでFormを使うための、必要最低限の知識

Posted at

概要

FlaskのFlask-WTFを使ってFormを定義・レンダリング・バリデーションする方法

Formの定義

class AnimalForm(FlaskForm):
    name = StringField('name', validators=[validators.Required(), validators.length(max=30)])
    kind = StringField('kind', validators=[validators.Required(), validators.length(max=10)])
    description = TextAreaField('description', validators=[])
ポイント
  • FlaskFormを継承して作る
  • validatorsには複数のvalidatorを渡すことができる

Formのレンダリング

      <form method="POST">
      <p>{{ form.name.label }}:{{ form.name(size=30) }}</p>
      <p>{{ form.kind.label }}:{{ form.kind(size=20) }}</p>
      <p>{{ form.description.label }}:{{ form.description(cols="50", rows="20") }}</p>
      <button type="submit">Submit</button>
      </form>
ポイント
  • labelにアクセスすることでformで定義した名前を取得できる
  • それぞれのフィールドはcallableになっており、HTMLをレンダリングする
  • fieldをレダリングするときに、引数を渡すとHTMLのプロパティに変換してくれる

SubmitされたFormのバリデーション

    form = AnimalForm()
    if form.validate_on_submit():
        name = form.name.data
        kind = form.kind.data
        description = form.description.data
ポイント
  • validate_on_submitでpostかどうかのチェック・データのバリデーションをしてくれる
  • dataにアクセスすることで、バリデーション後のデータを取得できる
3
5
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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?