Mako在有效代码上出现语法错误?
我在尝试在一个mako模板中使用一段代码块,但无论我在这个代码块里写什么,Mako总是说有语法错误。
这是我提到的代码块的一部分:
<td class="col_sm_space"> </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"
),但还是会出现错误。
Mako返回的信息是:
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
行是开头的<%
。字符9
应该是下一行的if
的开始,显然是这样。
奇怪的是,我在其他页面上用的是完全相同的设置,那些页面都没问题——就这里出错。
我是不是漏掉了什么明显的问题?
4 个回答
1
这个问题很早以前就被问过了,不过为了记录一下,这一行缺少了一个左括号“(”,不太清楚这是否是导致问题的原因,但看起来很有可能:
delta_co2_rate = "%.2fg/l" % trk["d_co2_rate"])
应该至少是:
delta_co2_rate = "%.2fg/l" % (trk["d_co2_rate"])
2
我的经历是我用了这样的if语法:
% if ${use_force_ssl} == 1:
其实应该是这样的:
% if use_force_ssl == 1:
希望这能帮助到某个人。
2
我遇到过一个非常让人沮丧的情况。在我的例子里,错误报告完全不准确。它指向了一个 Python 代码块的第一行,就像你遇到的那样,但实际上错误是在50行之后的另一个 Python 代码块里。
很可能,你的代码里有个简单的语法错误,比如缩进不对或者在 if 语句后面缺少冒号……我不能给你更好的调试建议,除了仔细检查你的 Python 代码。如果可以的话,试着在 Mako 之外单独测试你的 Python 代码块,这可能会有帮助。