我需要产生一个用大括号括起来的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/

10-14 15:45
查看更多