プロジェクトの 1 つでPyramidを使い始めたばかりで、フォーム フィールドの値を取得して Web サービス呼び出しを行い、値の正確性を確認することで、フォーム フィールドの入力を検証する必要がある場合があります。たとえば、銀行の CUSTOMER-ID というフィールドがあります。それを(単独で)入力として受け取り、(のような)Webサービス呼び出しを行うことでサーバーレベルで検証する必要がありhttp://someotherdomain/validate_customer_id/?customer_id=<input_value>
ます。
フォーム スキーマ管理にはColanderを使用し、すべてのフォーム検証ロジックにはDeformを使用しています。CUSTOMER-ID ケースの検証ロジックをどこに配置する必要があるかについて混乱しています。それはMySchema().bind(customer_id=<input_value>)
(Webサービスを照会する遅延バリデーターを持っている)にありますか、それとも form.validate(request.POST.items()) にありますか? 延期されたバリデーターのパスを使用すると、 MySchema().bind
CUSTOMER colander.Invalid
-ID が正しくないというエラーが発生します。それはいいです。しかし、そのエラーはフォーム レベルではなく、スキーマ レベルにあります。では、これについてユーザーに適切に伝えるにはどうすればよいでしょうか。
私は Django フォームの経験が豊富なので、clean
メソッドのようなものを期待していました。form['customer_id'].error のようなフォーム エラーは、テンプレート レベルで期待しているものです。Pyramid の Deform または Colander で可能ですか?