Как я могу запретить Django интерпретировать блок, содержащий фигурные кавычки?
Я работаю над сайтом, который использует шаблоны Django, и я должен создать HTML, который содержит парные фигурные кавычки. Есть ли способ отключить обработку тегов Django для блока кода? Было бы неплохо что-то вроде буквального тега блока, так что:
{% literal %}
{% LITERAL {{ BRACES }}
{% endliteral %}
... будет производить {% LITERAL {{ BRACES }}
на выходе.
3 ответа
РЕДАКТИРОВАТЬ: ваш синтаксис в настоящее время невозможен с текущей системой лексера / парсера.
Зачем? В основном система шаблонов имеет Lexer и Parser. Lexer принимает строку шаблона в качестве входных данных и маркирует ее. Затем синтаксический анализатор берет список токенов в своем конструкторе и анализирует их в список связок узлов для скомпилированного шаблона. Теги и фильтры шаблона имеют доступ только к уже созданному парсеру - вы не можете получить доступ к исходной строке лексера. Смотрите комментарии в django/templates/__init__.py
Тем не менее, есть решение. Это не мое (см. Ниже), но его использование в основном на стороне сервера включает {% ssi some_file.html %}, чтобы включить дополнительный файл с буквенным текстом. Да, это уродливое решение; но без существенного переписывания системы шаблонов этого будет достаточно.