我正在尝试在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
的开头。
奇怪的是,我在其他页面上使用了这个完全相同的设置,对那些人来说没问题 - 只是不在这里。
有什么明显的东西我在这里不见了?
答案 0 :(得分:2)
我对此感到非常沮丧。在我的情况下,至少,错误报告是完全错误的。它指向python块的第一行,就像你的那样,当实际错误位于不同的python块中时,50行之后。
可能,你有一个简单的语法错误,如错误的缩进或if语句后缺少冒号...我不能给你任何更好的调试建议,而不是通过你的python与细齿梳。如果可以在Mako之外对你的python块进行单元测试,那可能会有所帮助。
答案 1 :(得分:1)
这是很久以前的问题,但是为了记录,有一个失踪的左手,“(”,在这一行,它不清楚,如果这导致问题,但似乎可能:
delta_co2_rate = "%.2fg/l" % trk["d_co2_rate"])
至少应该是:
delta_co2_rate = "%.2fg/l" % (trk["d_co2_rate"])
答案 2 :(得分:1)
在mako模板中,当您使用条件语句时,例如,如果,等等,它应该是这样的:如果条件
则为%
一些代码
%endif
对于分配,你必须将该东西嵌入<% %>
中
如果你将遵循这个,你的代码将会运行
答案 3 :(得分:0)
我的经验是我有这个语法:
% if ${use_force_ssl} == 1:
相反,应该是这样的:
% if use_force_ssl == 1:
希望这有助于某人。