0Pricing
Flask Academy · レッスン

FlaskFormクラスを定義する

Pythonでフィールドとバリデーターを宣言します

「FlaskFormクラスを定義する」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。

Flask-WTFを使う理由

フォームデータをそのまま手作業で扱うと、すぐに複雑になります。Flask-WTFを使えば、フォームをPythonクラスとして一度定義し、どこでも再利用できます。🎯

拡張機能をインストールする

Flask-WTFはWTFormsライブラリをラップし、CSRF保護を追加します。フィールドを1つ書く前にpipでインストールしてください。

pip install Flask-WTF

FlaskFormを継承する

作成するフォームはすべて、FlaskFormを継承するクラスです。この基底クラスにより、CSRF保護とバリデーションをすぐに利用できます。

from flask_wtf import FlaskForm

class LoginForm(FlaskForm):
    pass

最初のフィールドを追加する

フィールドは、フィールドオブジェクトを設定したクラス属性です。StringFieldはテキスト入力として表示され、ユーザーが入力した内容を保存します。

from wtforms import StringField

class LoginForm(FlaskForm):
    username = StringField('Username')

よく使うフィールド型

WTFormsには多くのフィールド型が用意されています。入力するデータに合わせて、PasswordField、BooleanField、SelectFieldなどを使い分けてください。

from wtforms import PasswordField, BooleanField

password = PasswordField('Password')
remember = BooleanField('Remember me')

フィールドにラベルを付ける

フィールドの最初の引数はlabelです。このテキストがテンプレートで入力欄の横に表示されるため、ユーザーに分かりやすい内容にしてください。

email = StringField('Email address')

バリデーターを設定する

validatorsリストを渡してルールを適用します。DataRequiredは、ビューが実行される前に空の送信を拒否します。

from wtforms.validators import DataRequired

username = StringField('Username', validators=[DataRequired()])

複数のルールを重ねる

バリデーターは順番に実行されるため、複数を組み合わせられます。1つのフィールドで、値の入力を必須にしたうえで長さも確認できます。

from wtforms.validators import DataRequired, Length

name = StringField('Name', validators=[DataRequired(), Length(min=2, max=40)])

送信ボタンを追加する

SubmitFieldはフォームのボタンになります。クラスに含めることで、フォーム全体の定義を1か所に整理できます。

from wtforms import SubmitField

submit = SubmitField('Log in')

完全なフォームクラス

これまでの要素を組み合わせると、どのビューでもインスタンス化できる、再利用可能で自己検証するフォームクラスが完成します。

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    submit = SubmitField('Log in')

ビューでインスタンス化する

ビュー内では、フォームのインスタンスを作成するだけです。するとフォームオブジェクトが、そのリクエストに必要なフィールド、データ、エラーを保持します。

@app.route('/login')
def login():
    form = LoginForm()
    return render_template('login.html', form=form)

クイックチェック

Flask-WTFのフォームは、どの基底クラスを継承すべきでしょうか。

まとめ

フォームをクラスとして定義し、FlaskFormを継承して、ラベルとバリデーター付きの型付きフィールドを追加し、送信ボタンで仕上げる方法を学びました。再利用しやすく、すっきりした構成です。✨

よくある質問

「FlaskFormクラスを定義する」レッスンは無料ですか?

はい。「FlaskFormクラスを定義する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。

「FlaskFormクラスを定義する」で何を学びますか?

Pythonでフィールドとバリデーターを宣言します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Flask Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「FlaskFormクラスを定義する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFlask Academyレッスンでコードを書いて実行できますか?

はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. FlaskFormクラスを定義する
  2. フォームをレンダリングして送信する
  3. validate_on_submitとCSRFトークン
  4. カスタムバリデーターとフィールドエラー
← Flask Academyに戻る