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はオープニング<%です。どうやらChar9は次の行の先頭になります。if

奇妙なことに、私は他のページでこれとまったく同じ設定を使用していますが、それらは問題ありません-ここではありません.

私がここに欠けている明白に明白なものはありますか?

4

4 に答える 4

2

私はこれで本当にイライラした経験をしました。私の場合、少なくとも、エラー レポートは完全に間違っていました。実際のエラーが50行後の別のpythonブロックにあったとき、それはあなたのようなpythonブロックの最初の行を指していました。

おそらく、if ステートメントの後に不適切なインデントやコロンの欠落などの単純な構文エラーが発生している可能性があります...細かい櫛で Python を調べるよりも優れたデバッグのアドバイスはありません。Mako の外部で Python ブロックを単体テストできる場合は、役立つかもしれません。

于 2012-03-02T00:03:51.133 に答える
1

mako テンプレートでは、ifや
for などの条件文を使用する場合、次のようにする必要があり ます
。走る。



<% %>

于 2014-03-27T08:48:14.973 に答える
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 に答える