如何在Django模板中转义{{或}}?

75 投票
10 回答
39158 浏览
提问于 2025-04-17 04:20

Django在模板中把{{ var }}看作是一个变量。如果你想让{{ var }}或者{{}}这些符号不被当作变量处理,应该怎么做呢?

<p>"{{ some text }}"</p> 这样写应该能完全一样地显示出来。

10 个回答

28

编辑:我其实不太推荐这样做,因为不太干净,但这仍然是一个选择。

我在寻找一个可以和JQuery模板一起使用的方法,发现了一种不需要标签或过滤器的做法。这是我能做到的最简短的方式:

{{ "{{ any text }" }}}

打印出来是:

{{ any text }}

为什么这样有效? 只要文本在{{}}之间,就会原样显示,只要里面没有连续出现两个闭合大括号}}。如果出现三个大括号,django会把前两个当作变量的结束,留下一个额外的闭合大括号。

156

Django 1.5 版本引入了一个叫做 {% verbatim %} 的模板标签。这个标签的作用是让模板在处理内容时,忽略这个标签里面的内容:

{% verbatim %}
    {{ var }}
{% endverbatim %}

将会被渲染成:

{{ var }}
67

我想你是在寻找templatetag这个模板标签。

正如链接中的文档所说,

因为模板系统没有“转义”的概念,所以要显示模板标签中使用的某些内容,你必须使用{% templatetag %}标签。

举个例子:

<p>"{% templatetag openvariable %} some text {% templatetag closevariable %}"</p>

将会显示成这样:

<p>"{{ some text }}"</p>

撰写回答