【发布时间】:2011-10-13 19:17:50
【问题描述】:
我正在开发一个使用 Django 模板的网站,并且我必须生成包含成对花引号的 HTML。有什么方法可以禁用 Django 对代码块的标记处理?像文字块标签这样的东西会很好,所以:
{% literal %}
{% LITERAL {{ BRACES }}
{% endliteral %}
... 会在输出中产生{% LITERAL {{ BRACES }}。
【问题讨论】:
我正在开发一个使用 Django 模板的网站,并且我必须生成包含成对花引号的 HTML。有什么方法可以禁用 Django 对代码块的标记处理?像文字块标签这样的东西会很好,所以:
{% literal %}
{% LITERAL {{ BRACES }}
{% endliteral %}
... 会在输出中产生{% LITERAL {{ BRACES }}。
【问题讨论】:
为了记录,现在可以逐字逐句地使用模板标签。
【讨论】:
verbatim 标签的文档链接:docs.djangoproject.com/en/dev/ref/templates/builtins/…
编辑: 当前的词法分析器/解析器系统目前无法使用您的语法。
为什么?基本上,模板系统有一个 Lexer 和一个 Parser。 Lexer 将模板字符串作为输入,并对其进行标记。然后,解析器在其构造函数中获取标记列表,并将它们解析为已编译模板的一组节点列表。模板标签和过滤器只能访问已经构建的解析器——你不能访问初始的词法分析器字符串。见django/templates/__init__.py中的cmets
但是,有一个解决方案。它不是我的(见下文),但它基本上使用服务器端包含 {% ssi some_file.html %} 来包含一个具有文字文本的额外文件。是的,这是一个丑陋的解决方案;但无需对模板系统进行重大改写就足够了。
【讨论】:
【讨论】: