TALESの表現は私にとって新しいものです。同じものについての良い参考資料を入手できますか?実際、ploneformgenを使用して数値入力フィールドのコンテンツルールを定義したいと思います。何かのようなもの:
python: request.form.get('amt', False) <= 5000
次に、ルールを適用します。
ここで、「amt」は入力フォームの数値/整数フィールドです。
TALESの表現は私にとって新しいものです。同じものについての良い参考資料を入手できますか?実際、ploneformgenを使用して数値入力フィールドのコンテンツルールを定義したいと思います。何かのようなもの:
python: request.form.get('amt', False) <= 5000
次に、ルールを適用します。
ここで、「amt」は入力フォームの数値/整数フィールドです。
参考までに、公式のTALES仕様を参照するか、ZopePageTemplatesリファレンスのTALESセクションを参照してください。
この場合、プレーンなpython式を使用しているため、Pythonコードの通常のルールが適用されます。
式request.form.get('amt'、False)は、要求'amt'
から要求パラメーターを返します。それが欠落している場合は、ブール値を返しFalse
ます。これを整数値と比較します。
この式には2つの問題があります。まず、'amt'
パラメーターが整数値であると想定します。ただし、PFG整数フィールドでさえ、要求オブジェクトの文字列のままです。そのため、比較する前に、まず整数に変換する必要があります。
また、ブール値にフォールバックします。これは、整数の比較では、と同等と見なされ0
ます。明示的にして、代わりにそれを使用することをお勧めします。
python: int(request.form.get('amt', 0)) <= 5000
PFG条件の場合、ブール値Trueの代わりに文字列エラーメッセージを返すこともできることに注意してください。
python: int(request.form.get('amt', 0)) <= 5000 or 'Amount must be not be greater than 5000'
通常、フォームパラメータは、アプリケーションレベルで定義されていない場合は文字列として渡され、それ以外の場合は文字列として渡されます。
Zopeは、値を整数に変換するために、内部でフィールド名amt:intを使用します。
したがって、最初の式の前後にint(....)を配置してみてください。