我需要产生一个用大括号括起来的id(例如“{1234}”)。使用django模板语言,花括号还用于启动变量替换,因此在获取所需内容时遇到了一些麻烦。我试过了
{{{ id }}}
{{ '{'id'}' }}
{{ '{'+id+'}' }}
{ {{ id }} }
除最后一种方法外,这些方法均无效,但最后一种方法不幸地产生了“{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+"}"
最佳答案
我认为您的答案可以在这里找到:
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#templatetag
简而言之,您想使用{% templatetag openbrace %}
和{% templatetag closebrace %}
。
编辑:
Django现在还提供了以下功能:
{% verbatim %} {{ blah blah }} {% endverbatim %}
关于django - 如何在Django模板中放置花括号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1659492/