【问题标题】:Mako giving SyntaxError on valid code?Mako 在有效代码上给出 SyntaxError?
【发布时间】:2011-08-03 20:43:33
【问题描述】:

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

这是相关块的 sn-p:

  <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 '&lt;snipped&gt;' at line: 271 char: 9\n, referer: &lt;snipped&gt;

271 行是开头&lt;%。显然,字符 9 将是下一行 if 的开头。

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

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

【问题讨论】:

  • 你有问题的行中有任何不可见的字符吗?还是与其他工作文件中的换行符不同?
  • 不,同样的格式。 Unix 行尾,行尾没有多余的空格,也没有制表符(缩进为 4 个空格)。

标签: python syntax-error mako


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    % if ${use_force_ssl} == 1:
    

    相反,它应该是这样的:

    % if use_force_ssl == 1:
    

    希望这对某人有所帮助。

    【讨论】:

      【解决方案3】:

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

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

      至少应该是:

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

      【讨论】:

        【解决方案4】:

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

        对于分配,你必须将那个东西嵌入到&lt;% %&gt;

        如果你遵循这个,你的代码就会运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-24
          • 2017-05-22
          • 2022-11-04
          • 2021-03-19
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多