0

パスワード変更フォームを作成していて、検証のために元のパスワードをフォームに渡したいのですが、それを行う唯一の方法は、非表示フィールドにして残りのデータと一緒に渡すことです。私は明らかにそれをしたくありません。ビュー内からフォームコンストラクターに渡すだけですが、フォームデータと一緒に渡されない場合、それは機能しません。

class MyForm(Form):
    ...
    original_password = HiddenField()
    ...

    def validate_current_password(form, field):
        if field.data != form.original_password.data:
            ERROR

form = MyForm(request.POST, original_password=password)request.POST が空でない限り、またはフォームで元のパスワードを実際にレンダリングして送信しない限り、機能しません。それ以外の場合、form.original_password.data は空です。

4

1 に答える 1

0

formencode の「状態」変数に精通している方のために、フォームをサブクラス化し、検証を支援する情報を含む状態変数を追加することでこれを解決しました。

于 2012-07-14T01:31:39.167 に答える