2

TALES 表达对我来说是新的。我可以得到一些很好的参考吗?实际上,我希望使用 ploneformgen 为数字输入字段定义内容规则。就像是:

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

然后应用规则。

这里的“amt”是输入表单上的数字/整数字段。

4

2 回答 2

3

作为参考,您应该查看官方TALES 规范,或参考Zope Page Templates 参考的 TALES 部分

在这种情况下,您使用的是纯 Python 表达式,因此适用 Python 代码的正常规则。

表达式 request.form.get('amt', False) 将从请求中返回请求参数'amt',如果缺少该参数,则返回 boolean 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'
于 2012-07-30T11:51:37.283 回答
1

如果表单参数未在应用程序级别定义,则通常作为字符串传入,否则例如

Zope 将在后台使用字段名 amt:int 将值转换为整数。

因此,您可能想尝试在第一个表达式周围放置一个 int(....)。

于 2012-07-30T11:08:51.203 回答