如何在django模板中添加大括号?

Ste*_*ini 22 django braces

我需要生成一个被大括号包围的id(例如"{1234}").使用django模板语言,大括号也用于启动变量替换,因此我在获取我想要的东西时遇到一些麻烦.我试过了

{{{ id }}}
{{ '{'id'}' }}
{{ '{'+id+'}' }}
{ {{ id }} }
Run Code Online (Sandbox Code Playgroud)

这些方法都不起作用,除了最后一个,不幸的是产生了"{1234}",而不是我想要的.我目前有两个解决方案:要么我传递一个已经包含{}(丑陋)的id变量,要么我写了一个自定义过滤器然后写{{id | add_braces}}(我更喜欢它).

在这种方式之前,我更愿意询问是否存在更好的解决方案.

使用转义值不起作用.即使我添加{%autoescape off%}%7B {%endautoescape%}我也没有{,这很奇怪,但这是另一个问题.

谢谢

编辑:我写了一个快速过滤器.将其粘贴在此处,以便其他人可以将其用作编写更复杂的模板.要放入python包application_path/templatetags/formatting.py

from django import template
from django.template.defaultfilters import stringfilter

register = template.Library()

@register.filter
@stringfilter
def add_braces(value):
    return "{"+value+"}"
Run Code Online (Sandbox Code Playgroud)

Pau*_*lan 29

我想你的答案可以在这里找到:

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#templatetag

简而言之,你想使用{% templatetag openbrace %}{% templatetag closebrace %}.

编辑:Django现在还包括开箱即用的这个功能:

{% verbatim %} {{ blah blah }} {% endverbatim %}
Run Code Online (Sandbox Code Playgroud)


sec*_*ond 10

{% templatetag openbrace %} 变得非常冗长,例如javascript模板

我已经使用了这个要点中verbatim标签,并且正是为了这个目的而取得了一些成功,这让你可以做类似的事情

{{ request.user }}
{% verbatim %}
     brackets inside here are left alone, which is handy for e.g. jquery templates
     {{ this will be left }}
     {% so will this %}
{% endverbatim }}

{% more regular tags (to be replaced by the django template engine %}
Run Code Online (Sandbox Code Playgroud)