0

我正在尝试使用 2 个 Tal 条件语句来检查代码是否是两件事之一,然后执行相应的计算。但发生的是它并排打印出两个条件的结果。

谢谢!

Unit    4.5522 0.0000
unit.. . 3.7628 0.0000
Unit     0.0000 14.6083
unit     0.0000 31.9430
<td style="text-align: right;">
  <span tal:condition="python:float(result.totdirrn)!=0 and (result.wkld1_desc!='Proceedures' and result.wkld1_desc!='Visits')">
  <span tal:replace="python:'%.4f'%(float(result.cenmn)/((((float(result.dirhrs)*(float(float(result.totdirrn)/float(result.dirhrs))))/14)/12)/2))">currentindex</span>
  <span tal:condition="python:float(result.totdirrn)!=0 and (result.wkld1_desc!='Census')">
  <span tal:replace="python:'%.4f'%(float(result.vipr)/((((float(result.dirhrs)*(float(float(result.totdirrn)/float(result.dirhrs))))/14)/12)/2))">currentindex</span></span>

  </span>
  <span tal:condition="python:(float(result.totdirrn)==0)">
  <span tal:replace="python:'%.1f'%(0.0)"></span></span>
</td>
4

1 回答 1

1

目前还不清楚您要做什么,或者您的预期输出是什么。我已经解决了您的模板代码的一般问题,让我们看看这是否解决了您的问题:

看来您的开始和结束<span/>标签混淆了。目前您的结构如下所示:

<span condition>
    <span replace></span>
    <span condition>
        <span replace></span>
    </span>
<span>
<span condition>
    <span replace></span>
</span>

虽然我怀疑你真的想要:

<span condition>
    <span replace></span>
<span>
<span condition>
    <span replace></span>
</span>
<span condition>
    <span replace></span>
</span>

您可以条件跨度与tal:content属性结合起来,而不是替换嵌套<span>标签,从而形成:

<span condition content></span>
<span condition content></span>
<span condition content></span>

或者,应用于您的示例代码,并进行一些改进以使内容更具可读性:

<td style="text-align: right;"
      tal:define="desc result/wkld1_desc;
                  totdirrn python:float(result.totdirrn);
                  cenmn python:float(result.cenmn);
                  dirhrs python:float(result.dirhrs);
                  vipr python:float(result.vipr);
                 ">
  <span tal:condition="python:totdirrn and desc not in ('Proceedures', 'Visits')"
        tal:content="python:'%.4f' % (cenmn / (dirhrs * (totdirrn / dirhrs) / 336))">currentindex</span>
  <span tal:condition="python:totdirrn and desc != 'Census'" 
        tal:content="python:'%.4f' % (vipr / (dirhrs * (totdirrn / dirhrs) / 336))">currentindex</span>
  <span tal:condition="python:not totdirrn">0.0</span>
</td>

您可能希望确保float结果的那些已经是浮点值,并float()在您的视图中避免所有这些调用。

还要考虑到浮点值可能不完全为零,值0.000001不等于0但会被打印,就0.000好像您要求逗号后面的 4 位精度一样。

于 2013-07-18T10:52:32.267 回答