【问题标题】:How do I prevent Django from interpreting a block which contains curly quotes?如何防止 Django 解释包含花引号的块?
【发布时间】:2011-10-13 19:17:50
【问题描述】:

我正在开发一个使用 Django 模板的网站,并且我必须生成包含成对花引号的 HTML。有什么方法可以禁用 Django 对代码块的标记处理?像文字块标签这样的东西会很好,所以:

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

... 会在输出中产生{% LITERAL {{ BRACES }}

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    为了记录,现在可以逐字逐句地使用模板标签。

    【讨论】:

    【解决方案2】:

    编辑: 当前的词法分析器/解析器系统目前无法使用您的语法。

    为什么?基本上,模板系统有一个 Lexer 和一个 Parser。 Lexer 将模板字符串作为输入,并对其进行标记。然后,解析器在其构造函数中获取标记列表,并将它们解析为已编译模板的一组节点列表。模板标签和过滤器只能访问已经构建的解析器——你不能访问初始的词法分析器字符串。见django/templates/__init__.py中的cmets

    但是,有一个解决方案。它不是我的(见下文),但它基本上使用服务器端包含 {% ssi some_file.html %} 来包含一个具有文字文本的额外文件。是的,这是一个丑陋的解决方案;但无需对模板系统进行重大改写就足够了。

    Easy Way to Escape Django Template Variables

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 没用。你认真地建议我应该把上面写成'{% templatetag openblock %} LITERAL {% templatetag openvariable %} BRACES {% templatetag closevariable %}'?可以想象一个块可能包含数百个大括号对。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2021-12-16
      相关资源
      最近更新 更多