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-WTFFlaskFormを継承する
作成するフォームはすべて、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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- FlaskFormクラスを定義する
- フォームをレンダリングして送信する
- validate_on_submitとCSRFトークン
- カスタムバリデーターとフィールドエラー