ホームページ  >  記事  >  バックエンド開発  >  Flask-WTF: Flask アプリケーションにフォームを追加する

Flask-WTF: Flask アプリケーションにフォームを追加する

WBOY
WBOYオリジナル
2023-06-17 21:50:56868ブラウズ

Flask-WTF は、フォームを使用して Flask フレームワーク アプリケーションを簡素化するために設計された Python パッケージです。 Flask アプリケーションにフォームを簡単に追加するための、シンプルかつ強力なインターフェイスを提供します。 Flask-WTF を使用すると、フォーム データを簡単に検証および処理し、カスタム バリデーターとフィールドをフォームに追加できます。この記事では、Flask-WTF を使用して Flask アプリケーションにフォームを追加する方法を紹介します。

Flask-WTF のインストール

まず、Flask-WTF パッケージをインストールする必要があります。 pip を使用してインストールできます。

pip install Flask-WTF

Flask アプリケーションの作成

フォームの追加を開始する前に、Flask アプリケーションを作成する必要があります。単純な Flask アプリケーションの例を次に示します。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

より複雑なアプリケーションの場合は、さらに多くの構成とセットアップが必要になる場合があります。

フォーム クラスの作成

Flask-WTF はフォーム クラスを使用してフォーム フィールドを記述します。フォーム クラスは、Flask-WTF で提供されるクラス FlaskForm から派生します。フォーム クラスでは、フォーム フィールド、バリデータ、およびその他のプロパティを定義できます。以下に、いくつかの基本的なフォーム フィールド タイプを示します。

  • StringField: 文字列を入力するために使用されます。
  • IntegerField: 整数の入力に使用されます。
  • BooleanField: ブール値 (チェックボックス) を入力するために使用されます。
  • TextAreaField: 複数行のテキストを入力するために使用されます。
  • SelectField: ドロップダウン メニューのオプションを選択するために使用されます。
  • RadioField: ラジオ ボタンに使用されます。
  • FileField: ファイルのアップロードに使用されます。

次に、単純なフォーム クラスの例を示します。

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class NameForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    submit = SubmitField('Submit')

上の例では、フォーム クラス NameFormname という名前のファイルが含まれています。 文字列フィールドと submit という名前の送信ボタン。文字列フィールドは、StringField タイプと DataRequired バリデーターを使用して定義されます。 DataRequiredバリデーターは、フィールド値が空でないことを確認します。

フォーム クラスでは、カスタム バリデーターを定義することもできます。たとえば、次のカスタム バリデータは、ユーザーが入力した値が 50 文字未満であることを確認します。

from wtforms import ValidationError

class LengthValidator(object):
    def __init__(self, max_chars):
        self.max_chars = max_chars

    def __call__(self, form, field):
        if len(field.data) > self.max_chars:
            raise ValidationError('Value must be less than {} characters'.format(self.max_chars))

class NameForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired(), LengthValidator(50)])
    submit = SubmitField('Submit')

上記の例では、バリデータ LengthValidator が定義されています。バリデーターは最大長パラメータで初期化され、入力フィールドの長さが最大長を超えているかどうかをチェックします。文字列フィールド定義で、LengthValidator バリデーターをバリデーターのリストに追加して、その属性値が 50 文字未満であることを確認します。

フォーム クラスでは、フィールドのレンダリング時に使用される CSS クラスなど、他のプロパティも定義できます。これらのプロパティを使用して、フォーム フィールドの外観と操作性をカスタマイズできます。

フォームの使用

Flask アプリケーションでフォームを使用するには、view 関数でフォーム インスタンスを作成する必要があります。フォーム インスタンスはフォーム クラスから作成し、テンプレートに渡すことができます。以下はビュー関数の例です。

from flask import render_template
from app import app
from forms import NameForm

@app.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        name = form.name.data
        return render_template('index.html', name=name)
    return render_template('index.html', form=form)

上記の例では、ビュー関数 index はフォーム インスタンス form を作成します。フォームが送信され、検証が成功した場合は、送信されたフォームから名前を取得してテンプレートに渡します。フォームが送信されていない場合、または検証に失敗した場合にフォームを表示します。

テンプレートでは、Flask-WTF が提供するフォーム描画機能を利用してフォームを描画することができます。以下は、Jinja2 テンプレート エンジンとブートストラップ スタイルを使用した簡単なテンプレートの例です。

<!doctype html>
<html>
  <head>
    <title>Flask-WTF Example</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css">
  </head>
  <body>
    <div class="container">
      <h1>Hello {{ name }}!</h1>
      <form method="post">
        {{ form.csrf_token }}
        {{ form.name.label }}
        {{ form.name }}
        {% for error in form.name.errors %}
          <span>{{ error }}</span>
        {% endfor %}
        {{ form.submit }}
      </form>
    </div>
  </body>
</html>

テンプレートでは、form オブジェクトを使用してフォーム フィールドと送信ボタンをレンダリングします。 csrf_token フィールドは、クロスサイト リクエスト フォージェリ攻撃を防ぐために使用される非表示フィールドです。

概要

Flask-WTF を使用すると、Flask アプリケーションにフォームを簡単に追加できます。フォーム クラスを使用すると、カスタム フォーム フィールドとバリデータを作成できます。ビュー関数では、フォーム インスタンスを作成し、テンプレート エンジンを使用してフォームをレンダリングできます。 Flask-WTF は、ファイルのアップロード、フォームのネスト、フォームの前処理などの他の機能も提供します。 Flask-WTF の機能を理解すると、Flask アプリケーションでのフォーム処理がよりシンプルかつ効率的になります。

以上がFlask-WTF: Flask アプリケーションにフォームを追加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。