問題タブ [cerberus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python: ケルベロス check_with 関数
dict
値が次のルールに従っているを検証したいと思います。
- 値は、単一
float
またはList(float)
- 単一
float
の場合、値は 1 でなければなりません - の場合
List(float)
、各フロートは正でなければなりません
これが私のコードといくつかのテストアサーションで、正しく機能しています:
ここで、もう 1 つの条件を実装する必要があります。
- の場合、 の
List(float)
はsum
1 にfloat
等しくなければなりません
したがって、check_with
ドキュメント ( https://docs.python-cerberus.org/en/stable/validation-rules.html ) に記載されている関数を作成しました。
調整されたスキーマとテスト ドキュメントは次のようになります。
これで、値が である場合は常に、List(float)
の最初の要素のみがlist
関数に注入され、TypeError: 'float' object is not iterable
.
を検証するとdocument4
、field
と にint=0
なりvalue=0.5
ます。したがって、エラーメッセージは理にかなっています。
リスト全体が関数に渡されないのはなぜですか? ここで何が欠けていますか?
python-3.x - Cerberus、Pythonで条件付き検証を設定することは可能ですか?
Python パッケージcerberusを使用してペイロードを検証します。これが私の問題です。
別のスキーマのフィールドに正確な値がある場合にのみ、フィールドを必須に設定する必要があります。何かのようなもの:
したがって、私のスキーマは次のようになります。
誰かがそれを達成する方法を知っていますか? ありがとうございました
python - キーが見つからない場合、ceberus で警告を出すにはどうすればよいですか?
Cerberus では必須フィールドを使用できますが、欠落している場合に警告メッセージがログに記録されるように、「優先」クラスのフィールドが必要です。私が持っている、素晴らしいとは思えないいくつかのアイデアは次のとおりです。
カスタム ruleを使用してバリデーターを拡張することもできますが、これらは
field
およびvalue
引数で呼び出されるため、欠落しているフィールドでこの関数が呼び出されるのではないかと疑っています。不足しているフィールドを生成するためにドキュメントで呼び出される__validate_required_fieldsの方が理想的ですが、それをフックする方法がわかりません。Cerberus はcheck_withオプションを提供していますが、欠落しているフィールドに対してこれが呼び出されるかどうかはわかりません。
これらを必須としてマークし、エラー ハンドラでトレースを実行することができます。「優先」フィールドが欠落している場合に検証が失敗しないため、これは理想的ではありません。
python - Cerberus one of two キー
入力ルートの 1 つを検証するために使用している一連のスキーマがあります。
email_address
しかし、どちらかまたはどちらかmobile_number
が必須であり、両方ではないことを定義する必要があります。これらの 2 つのキーの 1 つだけを要求するにはどうすればよいですか?