我需要生成一个被大括号包围的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)
| 归档时间: |
|
| 查看次数: |
8606 次 |
| 最近记录: |