Компиляция в unicode пока невозможна в методе parse()
, поскольку у вас нет контекста, доступного в этот момент. Вы можете взломать его, конечно, но это, вероятно, не лучший путь.
Обратите внимание, что шаг parse()
обычно выполняется только один раз для html-файла, после чего он использует проанализированный байт-код для визуализации шаблона. Результаты шага синтаксического анализа могут быть представлены с учетом среды.
У вас просто нет контекста, доступного там, и получить контекст там довольно сложно;)
Чтобы получить оригинальный источник, однако ... не намного проще без взлома, но взлом не так уж плохо;)
class YExtension(Extension):
tags = set(['y'])
def preprocess(self, source, name, filename=None):
# insert some code here that replaces '{% xyz %}foo bar{% endxyz %}'
# with something like: '{% xyz %}foo bar{% raw %}foo bar{% endraw %}{% endxyz %}'
return source
После этого вы можете прочитать текст как value
из узла {% raw %}
. После этого обязательно удалите его, или он появится в вашем шаблоне.