I thought I knew how this stuff worked, but this has gotten me banging my head against a wall. I'm trying to evaluate a condition expression, and I'm not getting what I expect when using path, and I get a different result when using python. The following expressions results=<span tal:content="results" /><br /> dosearch=<span tal:content="request/dosearch | string:NO SEARCH" /><br /> querytpe=<span tal:content="request/querytype | string:NO QUERYTYPE" /><br /> <!-- test with python: this gives me what I expect --> <div tal:condition="python:len(results) or request.get('dosearch',None) or request.get('querytype',None)">TRUE IN PYTHON</div> <-- This doesn't evaluate to true --> <div tal:condition="results | request/dosearch | request/querytype | nothing">THIS DOESN'T SHOW UP</div> ---- Produces: results=[] dosearch=NO SEARCH querytpe=mps TRUE IN PYTHON As you can see, the second expression doesn't evaluate to True. Can someone explain the subtleties I seem to be missing? Thanks, Mark