フォームを使用せずにフラスコwtformsバリデーターを使用する

ブロセフ

iOSアプリケーションからユーザー登録データを受信して​​います。wtformsに付属のバリデーターを使用して、電子メールとパスワードが受け入れ可能であることを確認したいと思います。ただし、ユーザーがiOSテキストフィールドからデータを入力しているため、フラスコフォームは使用していません。wtformsバリデーターで受信JSONデータをチェックすることは可能ですか?

@auth.route('/register', methods=['POST'])
def register():
    try:
        user = User.register_fromJSON(request.json)

        email_success = validate_email(user)
        username_success = validate_username(user)

        if email_success == 1 and username_success == 1:
            db.session.add(user)
            db.session.commit()
            return jsonify({'Success': 1})
        else:
            return jsonify({'Failure': 0})

    except Exception:
        return jsonify({'Failure': 0})

def validate_email(user):
    if User.query.filter_by(email=user.email).first() == None:
        return 1
    else:
        return 0

def validate_username(user):
    if User.query.filter_by(username=user.username).first() == None:
        return 1
    else:
        return 0

編集

登録フォームを作成しました:

class RegistrationForm(Form):
    email = StringField('Email', validators=[Required(), Length(1,64), Email()])
    username = StringField('Username', validators=[Required(), Length(1, 64), Regexp('^[A-Za-z][A-Za-z0-9_.]*$', 0, 'Usernames must have only letters, 'numbers, dots or underscores')])
    password = PasswordField('Password', validators=[Required()])


    def validate_email(self, field):
        if User.query.filter_by(email=field.data).first():
            print("Email already registered.")
            raise ValidationError('Email already registered.')

    def validate_username(self, field):
        if User.query.filter_by(username=field.data).first():
            print("Username already in use.")
            raise ValidationError('Username already in use.')

登録機能が更新されました:

@auth.route('/register', methods=['POST'])
def register():
    try:
        data = MultiDict(mapping=request.json)
        form = RegistrationForm(data)

        if form.validate():
            user = User.register_fromJSON(request.json)
            db.session.add(user)
            db.session.commit()
            return jsonify({'Success': 1})
        else:
            return jsonify({'Success': 2})

    except Exception:
        return jsonify({'Success': 3})
ショーン・ビエイラ

はい、これは完全に可能です-wtforms.FormコンストラクターはMultiDict同様のインターフェースを取ります(必要なgetlistだけです)のでwerkzeug.datastructures.MultiDict、JSONからのインスタンスを作成するだけです

data = MultiDict(mapping=request.json)
form = YourForm(data)
if form.validate():
    # Data is correct

(フィールド名が一致すると仮定して)そして物事はうまくいくでしょう

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

フォームtaglibを使用せずにSpring 3 MVCバリデーターにアクセスする方法

分類Dev

Laravelのフォームを使用せずにデータを削除する

分類Dev

ループを使用せずにデータフレームを再フォーマットする

分類Dev

フォームを使用せずにPOSTリクエストを送信する方法

分類Dev

materilaizeでカスタムCSSを使用せずにデフォルトのテーマカラーティールをブルーに変更する方法

分類Dev

フォームデータを使用せずにSpringでファイルをアップロードする

分類Dev

巨大なパフォーマンスを使用せずにAndroidでリアルタイムにデータベースから同期する方法

分類Dev

Cストリーム:バッファーを使用せずに、あるストリームから別のストリームにデータを直接コピーします

分類Dev

Windowsフォームを使用せずにリモートデスクトップクライアントアプリケーションを作成する(C#)

分類Dev

送信せずにフォームデータをPOSTする

分類Dev

デフォルトのコンストラクターなしでカスタムバリデーターを使用して手動で検証する

分類Dev

デフォルトのコンストラクターなしでカスタムバリデーターを使用して手動で検証する

分類Dev

pd.concat() を使用せずに、辞書のリストからデータフレームを作成する

分類Dev

Django:フォームを使用せずにcsvからデータベースにデータをインポートする方法は?

分類Dev

送信ボタンを使用してリロードせずにフォームをPHPページに送信する

分類Dev

アクションを使用せずにフォームがデータをデータベースに保存する理由

分類Dev

タイマーを使用せずにWindowsフォームでストップウォッチを表示する方法

分類Dev

クラスを使用してフォームデータをデータベースに保存する

分類Dev

PHPを使用せずにフォームを送信する

分類Dev

モデルRubyonRailsを更新せずにフォーム入力を使用する

分類Dev

symfonyフォームタイプでカスタム制約/バリデーターを使用する

分類Dev

ランダムな円をオーバーラップせずに(そしてブルートフォースを使用せずに)配置しますか?

分類Dev

フォームを使用せずにJavaScriptからサーバーにgetリクエストを送信するにはどうすればよいですか?

分類Dev

ジェネリッククラスベースのフォームをオーバーライドし、カスタムフォームを使用する属性?

分類Dev

ローカルコンピューターにファイルをダウンロードせずに、SSHを使用してリモートサーバー上のフォルダーからフォルダーにファイルを移動する

分類Dev

XMLフォームフィールドを使用せずにカスタムコンポーネントビューにjoomlaエディターを追加するにはどうすればよいですか?

分類Dev

リソースコンポーネントを使用せずにフォームデータをAORに保存するにはどうすればよいですか?

分類Dev

OrderByを使用せずにEntityFrameworkデータベースからランダムレコードを選択する

分類Dev

WTFormsフォームからデータを取得する

Related 関連記事

  1. 1

    フォームtaglibを使用せずにSpring 3 MVCバリデーターにアクセスする方法

  2. 2

    Laravelのフォームを使用せずにデータを削除する

  3. 3

    ループを使用せずにデータフレームを再フォーマットする

  4. 4

    フォームを使用せずにPOSTリクエストを送信する方法

  5. 5

    materilaizeでカスタムCSSを使用せずにデフォルトのテーマカラーティールをブルーに変更する方法

  6. 6

    フォームデータを使用せずにSpringでファイルをアップロードする

  7. 7

    巨大なパフォーマンスを使用せずにAndroidでリアルタイムにデータベースから同期する方法

  8. 8

    Cストリーム:バッファーを使用せずに、あるストリームから別のストリームにデータを直接コピーします

  9. 9

    Windowsフォームを使用せずにリモートデスクトップクライアントアプリケーションを作成する(C#)

  10. 10

    送信せずにフォームデータをPOSTする

  11. 11

    デフォルトのコンストラクターなしでカスタムバリデーターを使用して手動で検証する

  12. 12

    デフォルトのコンストラクターなしでカスタムバリデーターを使用して手動で検証する

  13. 13

    pd.concat() を使用せずに、辞書のリストからデータフレームを作成する

  14. 14

    Django:フォームを使用せずにcsvからデータベースにデータをインポートする方法は?

  15. 15

    送信ボタンを使用してリロードせずにフォームをPHPページに送信する

  16. 16

    アクションを使用せずにフォームがデータをデータベースに保存する理由

  17. 17

    タイマーを使用せずにWindowsフォームでストップウォッチを表示する方法

  18. 18

    クラスを使用してフォームデータをデータベースに保存する

  19. 19

    PHPを使用せずにフォームを送信する

  20. 20

    モデルRubyonRailsを更新せずにフォーム入力を使用する

  21. 21

    symfonyフォームタイプでカスタム制約/バリデーターを使用する

  22. 22

    ランダムな円をオーバーラップせずに(そしてブルートフォースを使用せずに)配置しますか?

  23. 23

    フォームを使用せずにJavaScriptからサーバーにgetリクエストを送信するにはどうすればよいですか?

  24. 24

    ジェネリッククラスベースのフォームをオーバーライドし、カスタムフォームを使用する属性?

  25. 25

    ローカルコンピューターにファイルをダウンロードせずに、SSHを使用してリモートサーバー上のフォルダーからフォルダーにファイルを移動する

  26. 26

    XMLフォームフィールドを使用せずにカスタムコンポーネントビューにjoomlaエディターを追加するにはどうすればよいですか?

  27. 27

    リソースコンポーネントを使用せずにフォームデータをAORに保存するにはどうすればよいですか?

  28. 28

    OrderByを使用せずにEntityFrameworkデータベースからランダムレコードを選択する

  29. 29

    WTFormsフォームからデータを取得する

ホットタグ

アーカイブ