2012-07-30 5 views
2

TALES 표현은 새로운 것입니다. 같은 것에 대한 좋은 참고 자료를 얻을 수 있습니까? 사실 ploneformgen을 사용하여 숫자 입력 필드에 대한 내용 규칙을 정의하고 싶습니다. 다음과 같이 입력하십시오 :Plone에서 숫자 입력을 비교하는 표현식을 말합니까?

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

그런 다음 규칙을 적용하십시오.

여기 'amt'는 입력 양식의 숫자/정수 필드입니다.

답변

3

공식적으로 TALES specification을 보거나 TALES section of the Zope Page Templates reference을 참조하십시오.

이 경우 일반 Python 표현식을 사용하므로 일반 Python 코드 규칙이 적용됩니다.

(거짓 'AMT') 발현 request.form.get 요청에서 요청 매개 변수 'amt'를 반환하고, 그 실종 경우 다음 정수 값으로 비교 부울 False을 반환합니다.

해당 식에는 2 가지 문제가 있습니다. 먼저 'amt' 매개 변수가 정수 값이라고 가정합니다. 그러나 PFG 정수 필드조차도 여전히 요청 객체의 문자열입니다. 따라서 그것을 비교하기 전에 먼저 정수로 변환해야합니다.

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

참고하는 PFG 조건에 대해, 당신은 할 수 있습니다

또한, 당신은 명시 대신 사용이 더 0에 해당하는 것으로 간주됩니다 정수 비교에서 부울로 후퇴 또한 진정한 부울 대신 문자열 오류 메시지를 반환 :

python: int(request.form.get('amt', 0)) <= 5000 or 'Amount must be not be greater than 5000' 
+2

@SteveM을 : 감사를 제안합니다. :-) 당신이 대답을 변경하는 것을 눈치 챘을 때, 그러나 그것은 맞지만 눈살을 찌푸리게됩니다. –

+0

고맙습니다. 하지만 실제로 원하는 것은 입력 int 값에 따라 달라지며, <= 5000 인 경우 저장된 데이터 항목을 folder1로 이동하려고합니다. 입력 int 값이 5000 이상인 경우, 그것을 folder2에 이동합니다. 위의 표현을 시도했지만 해결할 수 없습니다. int ('5000'), 또한 파이썬 : int (request.form.get ('amt', 0)) <= 5000 – user956424

+0

아마도 잘못된 조건이 아닙니다. 'python : True'와'python : False'로 이것을 테스트 해 보았습니까? –

1

일반적으로 양식 매개 변수는 응용 프로그램 수준에서 정의되지 않은 경우 문자열로 전달됩니다. 값을 정수로 변환하기 위해 INT :

조프는 후드 아래에있는 필드 이름의 AMT를 사용합니다.

그래서 첫 번째 표현식 주위에 int (....)를 넣으려고 할 수 있습니다.

관련 문제