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

Мне нужно создать идентификатор в окружении фигурных скобок (например, "{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+"}"

Ответы на вопрос(3)

ngo:

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

Решение заключается в следующем:

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

Конечно, два других ответа работают, но этот, на мой взгляд, менее многословен и более читабелен.

 Rebs10 нояб. 2015 г., 06:44
Для небольших дословных значений это хорошее решение. Для больших блоков ябуду идти с{% verbatim %} блочный тег.

{% templatetag openbrace %} стать чрезвычайно многословным, например, шаблоны javascriptI '

мы использовали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 %}
 stephendwolff30 июн. 2013 г., 22:29
дословный тег шаблона теперь является частью django (1.5):docs.djangoproject.com/en/1.5/ref/templates/builtins/#verbatim
 shacker24 апр. 2014 г., 01:20
Принятый ответ на этот вопрос, вероятно, следует изменить - дословно действительно правильный способ сделать это сейчас.
Решение Вопроса

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

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

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

{% verbatim %} {{ blah blah }} {% endverbatim %}
 Stefano Borini02 нояб. 2009 г., 06:30
Спасибо! в любом случае я написал фильтр. Добавляя это так, если кто-то хочет использовать это как маленький пример фильтра ...

Ваш ответ на вопрос