Django将{{ var }}
视为其模板中的某个变量。如何逃离{{ var }}
或{{
或}}
,以免django将其视为变量。
<p>"{{ some text }}"</p>
应该打印完全一样。
答案 0 :(得分:124)
Django 1.5引入了{% verbatim %}
模板标签。它会阻止模板解析此标记的内容:
{% verbatim %}
{{ var }}
{% endverbatim %}
将呈现为:
{{ var }}
答案 1 :(得分:60)
我相信您正在寻找templatetag
模板标记。
正如链接文档所述,
由于模板系统没有“转义”的概念,要显示模板标签中使用的其中一个位,您必须使用
{% templatetag %}
标签。
例如:
<p>"{% templatetag openvariable %} some text {% templatetag closevariable %}"</p>
将如此显示:
<p>"{{ some text }}"</p>
答案 2 :(得分:25)
编辑:我不是真的推荐这个,因为它不是很干净,但它仍然是一个选项。
我正在搜索一个可以与JQuery模板一起使用的方法,并找到了一种无需标签或过滤器的方法。这是我能得到的简短:
{{ "{{ any text }" }}}
打印为:
{{ any text }}
为什么会有效? {{}}中的任何文字都会按原样显示,只要它连续没有两个结束括号}}。然后连续有三个括号,django将两个第一个括号解释为变量的结尾,留下一个额外的右括号。
答案 3 :(得分:11)
您可以尝试使用html字符转义转义,例如:
{= {
} = }
<p>"{{ some text }}"</p>
在浏览器中试试。
答案 4 :(得分:7)
如果你只需要使用{{}}作为像angularjs这样的模板框架的变量,那么可能更简单:
在<app path>/templatetags/ngvar.py
中添加
from django import template
register = template.Library()
@register.simple_tag
def ngvar(var_name):
return "{{%s}}" % var_name
并在模板中,执行
{% load ngvar %}
{% ngvar "variable name" %}
如果ngvar.py是第一个模板标记,请确保将__init__.py
文件添加到templatetags
目录
答案 5 :(得分:3)
虽然上面的答案可以解决原来的问题,但我在这里为那些像我一样挠头的人添加了一些黑客。
有时,我们想要渲染一个大括号后跟一个变量。例如,在BibTeX中,可能会出现如下情况:
@MISC{hu2012-spectral,
author = {Hu, Pili},
title = {Spectral Clustering Survey},
howpublished = {GitHub, https://github.com/hupili/tutorial/tree/master/spectral-clustering},
month = {May},
year = {2012}
}
那些围兜字段来自模板变量。如果你写
title = {{{title}}},
jinja无法编译并引发错误。如果你写
title = { {{title}} },
会有额外的空白。黑客攻击是将'{'和'}'存储为变量并稍后使用。
{% set lb = '{' %}
{% set rb = '}' %}
...
@MISC{{lb}}{{ meta.bib_key }},
author = {{lb}}Hu, Pili{{rb}},
title = {{lb}}{{ meta.title }}{{rb}},
howpublished = {{lb}}GitHub, https://github.com/hupili/tutorial/tree/master/{{ auto.path}}{{rb}},
month = {{lb}}{{ meta.month }}{{rb}},
year = {{lb}}{{ meta.year }}{{rb}}
}
这看起来很笨拙,但它是迄今为止我发现的最好的。如果您有更清洁的解决方案,请告诉我。
答案 6 :(得分:2)
另一种选择是在每个花括号之间添加word joiner(零宽度不间断空格):
<p>"{⁠{ some text }⁠}"</p>
答案 7 :(得分:2)
This template tag(专为与jQuery模板一起使用而设计)可能会有所帮助。它允许你包装你不希望Django用模板标签解释为变量的内容。
答案 8 :(得分:1)
Jinja,这是用于模板的内容,提供了几个有关转义的建议here.对我来说最有用的是"{% raw %}{{ some text }}{% endraw %}"
答案 9 :(得分:1)
它可以通过避免相邻的角度反馈来解决,如果它的内部javascript代码那么你可以写
'{'+'{address.'+key+'}}'
我用它将jinja变量打印到另一个模板中,使用javascript。