1

我正在尝试在 mako 模板中使用一段代码,但无论我在代码块中放入什么,Mako 都坚持认为这是一个语法错误。

这是相关块的片段:

  <td class="col_sm_space">&nbsp;</td>
  <%
      if session.dist == "metric":
          delta_distance = "%.2fkm" % (trk["d_distance"] / 1000.0)
          delta_fuel = "%.2fl" % (trk["d_fuel"])
          delta_co2 = "%.2fg" % (trk["d_co2"])
          delta_co2_rate = "%.2fg/l" % trk["d_co2_rate"])
          trip_av_speed = "%dkm/h" % int(trk["trip_av_speed"])
          trip_peak_speed = "%dkm/h" % int(trk["trip_peak_speed"])
  %>
  <td class="col_field" title="${delta_distance}">${trk["trip_distance"]}</td>

我遇到了语法错误if session.dist == "metric":,尽管我可以用任何东西(例如foo = "bar")替换它,但它仍然给我错误。

马可回来了:

SyntaxException: (SyntaxError) invalid syntax (line 5) ('if session.dist == "metric":\\n delta_distance = ') in file '<snipped>' at line: 271 char: 9\n, referer: <snipped>

线271是开口<%。Char显然是下一行9的开头。if

奇怪的是,我在其他页面上使用了完全相同的设置,这些设置都很好——只是不在这里。

我在这里遗漏了什么明显的东西吗?

4

4 回答 4

2

我有一个非常令人沮丧的经历。至少在我的情况下,错误报告是完全错误的。它指向一个 python 块的第一行,就像你的一样,当实际错误在另一个 python 块中时,50 行之后。

很可能,您有一个简单的语法错误,例如缩进错误或 if 语句后缺少冒号……我无法为您提供比使用细齿梳检查 python 更好的调试建议。如果可以在 Mako 之外对您的 python 块进行单元测试,那可能会有所帮助。

于 2012-03-02T00:03:51.133 回答
2

我的经验是我有这个 if 语法:

% if ${use_force_ssl} == 1:

相反,它应该是这样的:

% if use_force_ssl == 1:

希望这可以帮助某人。

于 2018-03-21T14:25:14.067 回答
1

很久以前就有人问过这个问题,但据记录,这一行缺少左括号“(”,不清楚这是否导致了问题,但似乎很可能:

delta_co2_rate = "%.2fg/l" % trk["d_co2_rate"])

至少应该是:

delta_co2_rate = "%.2fg/l" % (trk["d_co2_rate"])
于 2013-02-03T04:09:50.990 回答
1

在 mako 模板中,
当您使用条件语句时,例如 if、for 等,它应该是这样的:
% if condition
some code
%endif

而对于分配,您必须嵌入该<% %>

内容跑。

于 2014-03-27T08:48:14.973 回答