ホームページ バックエンド開発 Python チュートリアル PythonでのFlaskアプリケーション(フォーム処理)

PythonでのFlaskアプリケーション(フォーム処理)

Nov 15, 2018 pm 02:42 PM
python

この記事の内容はPythonでのflaskアプリケーション(フォーム処理)に関するものですが、ある程度参考になる内容ですので、困っている方は参考にしていただければ幸いです。

1. Flask-WTF を使用する理由

リクエスト オブジェクトは、クライアントから送信されたすべてのリクエスト情報を公開します。特に、request.form は、POST リクエストによって送信されたフォーム データにアクセスできます。
Flask のリクエスト オブジェクトによって提供されるサポートは、Web フォームを処理するのに十分ですが、単調で反復的になる可能性のあるタスクがまだ多くあります。
フォーム HTML コードの生成と送信されたフォーム データの検証が 2 つの良い例です。

利点:

Flask-WTF 拡張機能により、Web フォームの処理がより快適になります。この拡張機能は、フレームワークに依存しない WTForms パッケージをラップする Flask 統合です。

2. フォーム処理とは何ですか?

Web ページでは、ユーザーと対話するためにいくつかのフォームが常に表示される必要があります。
flask は、flask がフォーム データの管理と操作を容易にするために、WTForm フォーム ライブラリを設計しました。

WTForm の最も重要な概念は次のとおりです:

1) Form クラス、開発者定義のフォームは、Form クラスまたはそのサブクラスから継承する必要があります。
Form クラスの主な機能は、それに含まれる Field クラスを通じてフォーム内のデータにすばやくアクセスできるようにすることです。

2). さまざまなフィールド クラス、つまりフィールド。一般に、各 Field クラスは入力 HTML タグに対応します。
たとえば、BooleanField など、WTForm に付属する一部の Field クラスは に対応し、
SubmitField は に対応します。等

3). バリデータークラス。このクラスは、ユーザーが入力したデータの有効性を検証するために使用されます。
たとえば、Length バリデーターは入力データの長さを検証するために使用でき、
FileAllowed はアップロードされたファイルのタイプを検証します。

さらに、csfr (クロスサイト リクエスト フォージェリ) 攻撃を防ぐために、flask では、flask-wtf を使用する前に、アプリがデフォルトで Secret_key を設定する必要があります。これを構成する最も簡単な方法は、app.config['SECRET_KEY'] = 'xxxx' を使用することです。

3. 共通フィールド クラス

PasswordField パスワード フィールド、入力を小さな黒い点に自動的に変換します。

DateField テキスト フィールド、形式要件は datetime です。日付は同じです

IntergerField テキスト フィールド、形式要件は整数です

DecimalField テキスト フィールド、形式要件は 10 進数と同じです。Decimal

FloatField テキスト フィールド、値は浮動小数点数です

BooleanField チェックボックス、値は True または Falseです

RadioField ラジオ ボタン ボックスのセット

SelectField ドロップダウン リストです。 Choices パラメータはドロップダウン オプションを決定しますが、HTML の

MultipleSelectField 複数のオプション値を含むドロップダウン リスト

Validator 検証関数

Validator は、フィールドを検証関数にバインドする検証関数です。その後、flask はフォームでデータを受信する前にデータを検証し、検証が成功するとデータを受信します。検証関数 Validator は次のとおりです。特定のバリデータには異なるパラメータが必要な場合があります。ここでは一般的に使用されるパラメータのみを示します。詳細な使用法については、wtforms/validators.py ファイルのソース コードを参照して、各バリデータ クラスに必要なパラメータを確認してください。 :

*基本的にすべてのバリデーターにはメッセージ パラメーターがあり、入力データがバリデーターの要件を満たさない場合にどのような情報が表示されるかを示します。

Email 電子メール アドレスの有効性を確認します。必要な通常のパターンは ^ です。 @(12 )$

EqualTo 2 つのフィールドを比較しますこの値は、通常、パスワードを 2 回入力するなどのシナリオで使用されます。パラメータ fieldname を記述することもできますが、これは同じ形式の別のフィールドのフィールド名を指す文字列変数であることに注意してください

IPAddress Verify IPv4アドレス、パラメータ デフォルトは ipv4=True、ipv6=False。 ipv6 を検証したい場合は、これら 2 つのパラメータを逆に設定できます。

長さ 入力文字列の長さを確認します。設定する長さの下限と上限を示すために、min と max の 2 つのパラメータを使用できます。パラメータのタイプは INT ではなく文字列であることに注意してください。 !

NumberRange 入力数値が範囲内にあるかどうかを確認するには、数値の上限と下限を示す 2 つのパラメーター min と max を使用できます。パラメーターのタイプは文字列ではなく、文字列であることに注意してください。 INT!! 次に、このバリデーターのメッセージ パラメーターに %(min)s と %( max)s の 2 つの書式設定部分を設定して、この範囲が何であるかをフロントエンドに伝えることができます。他のバリデーターにも同様のトリックがあるので、ソースコードを参照してください。

オプション 入力値がない場合、同じフィールド内の他の検証関数をスキップします。

必須 必須フィールド

Regexp 正規表現を使用して値を確認します。パラメータ regex='regexパターン' ###

URL URL を確認するには、必要な通常のパターンは ^[a-z] ://(?P3 )(?P:[0-9] )?( ?P/.*)?$

AnyOf 値がオプションの値のリストに含まれていることを確認してください。パラメータは値(オプションの値のリスト)です。特に、SelectField と組み合わせて使用​​する場合、SelectField の選択肢の項目の値を数値にできない理由がわかりません。 。そうしないと、AnyOf の value パラメーターに該当する数値があったとしても、現在のオプションが正当なオプションであると認識できません。 NoneOf にも同じトリックがあるのではないかと思います。

NoneOf 値がオプションの値のリストにないことを確認してください

#forms.py文件:用来设定规则
from flask_wtf import FlaskForm
from flask_wtf.file import FileRequired, FileAllowed
from wtforms import StringField, PasswordField, SubmitField, FileField
from wtforms.validators import DataRequired, Length


class LoginForm(FlaskForm):
    name = StringField(
        label="用户名/邮箱/手机号",
        validators=[
            # DataRequired("请输入用户名"),
            Length(3, 20, message="长度不符"),
        ]
    )
    passwd = PasswordField(
        label="密码",
        validators=[
            # DataRequired("请输入密码"),
            Length(3, 20),
        ], )

    file = FileField(
        label="简历",
        validators=[
            FileRequired(),
            FileAllowed(['pdf', 'txt'], 'pdf 能被接收')
        ]
    )
ログイン後にコピー
#templates/demo/login.html
nbsp;html>


    <meta>
    <title>Title</title>


ログイン後にコピー
    {{ form.hidden_tag() }}     {{ form.name.label }} {{ form.name }}     {{ form.passwd.label }} {{ form.passwd }}     {{ form.file }}     
#主程序
import random
from flask import Flask, redirect, render_template
from forms import LoginForm
from flask_bootstrap import  Bootstrap

app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config['SECRET_KEY'] =  random._urandom(24)

@app.route('/success/')
def success():
    return  "success"

@app.route('/login/', methods=('GET', 'POST'))
def submit():
    # 实例化表单对象;
    form = LoginForm()
    if form.validate_on_submit():
        print(form.data)
        return redirect('/success/')
    return render_template('demo/login.html', form=form)
app.run()
ログイン後にコピー

PythonでのFlaskアプリケーション(フォーム処理)

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

VSCODE拡張機能は悪意がありますか? VSCODE拡張機能は悪意がありますか? Apr 15, 2025 pm 07:57 PM

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

See all articles