Подтвердить что ты не робот

Как установить фигурные скобки в шаблонах django?

Мне нужно создать идентификатор, окруженный фигурными скобками (например, "{1234}" ). С языком шаблона django скобки также используются для запуска замены переменных, поэтому у меня есть некоторые проблемы с получением того, что я хочу. Я попробовал

{{{ id }}}
{{ '{'id'}' }}
{{ '{'+id+'}' }}
{ {{ id }} }

Ни один из этих методов не работает, кроме последнего, который, к сожалению, производит "{1234}", а не то, что я хочу. В настоящее время у меня есть два решения: либо я передаю идентификационную переменную, уже содержащую {} (уродливый), либо пишу настраиваемый фильтр, а затем пишу {{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+"}"
4b9b3361

Ответ 1

Я думаю, что ваш ответ можно найти здесь:

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

Короче говоря, вы хотите использовать {% templatetag openbrace %} и {% templatetag closebrace %}.

Изменить: Django теперь также включает эту функциональность из коробки:

{% verbatim %} {{ blah blah }} {% endverbatim %}

Ответ 2

{% 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 %}

Ответ 3

Рекомендация с языка шаблонов Jinja работает с движком шаблонов Django:

http://jinja.pocoo.org/docs/dev/templates/#escaping

Решение таково:

{{ '{' }}{{ id }}{{ '}' }}

Конечно, работают два других ответа, но это, по-моему, менее подробный и более читаемый.