Ошибка в Мако: «Ожидается%>», экранирование% - PullRequest
1 голос
/ 11 февраля 2012

Я сейчас пишу Javascript в файле mako, и в одной строке я должен проверить, равны ли две строки.Строка, с которой я проверяю, содержит «<% text», поэтому я получал сообщение об ошибке, в котором говорится, что нет тега с именем text.Я избежал этого, добавив второй%, чтобы получить «<%% text».Но теперь я получаю следующую ошибку: </p>

SyntaxException: Expected: %> in file file.mako

В чем проблема?

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

У меня только что была сломанная строковая переменная, которая ломала логику и не работала на несвязанной <% ... %> Пример:

<%
 variable = 'this won't work'
 #                  ^^^
%>
0 голосов
/ 29 мая 2013

"<%" и "%>" являются зарезервированными символами в Мако.Если они появятся в вашем шаблоне, Мако предположит, что вы хотите избежать блока кода Python.Вот пример того, что я имею в виду:

"""
<%
  some_var = 'foo'
  other_var = '{0} bar'.format(some_var)
%>
"""

Подробнее смотрите http://docs.makotemplates.org/en/latest/syntax.html#python-blocks

Извините, кавычки, "<%" и "%>"также являются зарезервированными символами в редакторе WYSIWYG переполнения стека.

Если сравниваемые переменные Javascript содержат зарезервированные символы, вам нужно будет найти другой способ их сравнения.Возможно, вы могли бы использовать юникодную сущность для знака процента:

Например:

if ('<%' == '<\u0025') {
    alert('success!');
}
...