2

TALESの表現は私にとって新しいものです。同じものについての良い参考資料を入手できますか?実際、ploneformgenを使用して数値入力フィールドのコンテンツルールを定義したいと思います。何かのようなもの:

python: request.form.get('amt', False) <= 5000     

次に、ルールを適用します。

ここで、「amt」は入力フォームの数値/整数フィールドです。

4

2 に答える 2

3

参考までに、公式の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'
于 2012-07-30T11:51:37.283 に答える
1

通常、フォームパラメータは、アプリケーションレベルで定義されていない場合は文字列として渡され、それ以外の場合は文字列として渡されます。

Zopeは、値を整数に変換するために、内部でフィールド名amt:intを使用します。

したがって、最初の式の前後にint(....)を配置してみてください。

于 2012-07-30T11:08:51.203 に答える