Как я могу запретить Django интерпретировать блок, содержащий фигурные кавычки?

Я работаю над сайтом, который использует шаблоны Django, и я должен создать HTML, который содержит парные фигурные кавычки. Есть ли способ отключить обработку тегов Django для блока кода? Было бы неплохо что-то вроде буквального тега блока, так что:

{% literal %}
 {% LITERAL {{ BRACES }}
{% endliteral %}

... будет производить {% LITERAL {{ BRACES }} на выходе.

3 ответа

Решение

РЕДАКТИРОВАТЬ: ваш синтаксис в настоящее время невозможен с текущей системой лексера / парсера.

Зачем? В основном система шаблонов имеет Lexer и Parser. Lexer принимает строку шаблона в качестве входных данных и маркирует ее. Затем синтаксический анализатор берет список токенов в своем конструкторе и анализирует их в список связок узлов для скомпилированного шаблона. Теги и фильтры шаблона имеют доступ только к уже созданному парсеру - вы не можете получить доступ к исходной строке лексера. Смотрите комментарии в django/templates/__init__.py

Тем не менее, есть решение. Это не мое (см. Ниже), но его использование в основном на стороне сервера включает {% ssi some_file.html %}, чтобы включить дополнительный файл с буквенным текстом. Да, это уродливое решение; но без существенного переписывания системы шаблонов этого будет достаточно.

Простой способ избежать переменных шаблона Django

Для записи, это возможно теперь с тегом шаблона дословно.

Другие вопросы по тегам