我需要生成一个被大括号包围的ID(例如"{1234}")。使用Django模板语言时,大括号还用于开始变量替换,所以我在获取想要的内容时遇到了一些麻烦。我尝试过:
{{{ id }}}
{{ '{'id'}' }}
{{ '{'+id+'}' }}
{ {{ id }} }
除了最后一个方法,其他方法都不起作用,但不幸的是它产生的结果是"{1234}",而不是我想要的。目前我有两个解决方案:要么传递一个已经包含 {} 的id变量(丑陋),要么编写自定义过滤器然后编写{{ id | add_braces }} (我更喜欢它)。
在采取这种方式之前,我更愿意问是否存在更好的解决方案。
使用转义值不起作用。 即使我添加 {% autoescape off %}%7B{% endautoescape %} ,我也得不到 {,这很奇怪,但这是另一个问题。
谢谢
编辑: 我写了一个快速过滤器。 在此粘贴以便其他人可以将其用作编写更复杂过滤器的模板。 要放入Python包应用程序路径 / 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+"}"