TALES表达对我来说是新的。我可以得到一些很好的参考吗?实际上我希望使用ploneformgen为数字输入字段定义内容规则。类似的东西:
python: request.form.get('amt', False) <= 5000
然后应用规则。
此处'amt'是输入表单上的数字/整数字段。
答案 0 :(得分:3)
作为参考,您应该查看官方TALES specification,或参阅TALES section of the Zope Page Templates reference。
在这种情况下,您使用的是普通的python表达式,因此适用于python代码的常规规则。
表达式request.form.get('amt',False)将从请求返回请求参数'amt'
,如果缺少,则返回布尔值False
,然后将其与之比较整数值。
该表达式有两个错误:首先,您假设'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'
答案 1 :(得分:1)
如果未在应用程序级别定义表单参数,则表单参数通常以字符串形式传递,例如
Zope将使用fieldname amt:int来将值转换为整数。
所以你可能想尝试在第一个表达式周围加一个int(....)。