para - django templates bootstrap
¿Cómo poner llaves en las plantillas django? (3)
Necesito producir una identificación rodeada de llaves (por ejemplo, "{1234}"). Con el lenguaje de plantillas de django, las llaves también se usan para iniciar una sustitución de variable, por lo que tengo algunos problemas para obtener lo que quiero. Lo intenté
{{{ id }}}
{{ ''{''id''}'' }}
{{ ''{''+id+''}'' }}
{ {{ id }} }
Ninguno de estos métodos funciona, excepto el último, que desafortunadamente produce "{1234}", no lo que quiero. Actualmente tengo dos soluciones: paso una variable de identificación que ya contiene {} (feo) o escribo un filtro personalizado y luego escribo {{id | add_braces}} (lo prefiero).
Antes de ir por este camino, prefiero preguntar si existe una mejor solución.
Usar valores de escape no funciona. Incluso si agrego {% autoescape off%}% 7B {% endautoescape%} no obtengo el {, lo cual es extraño, pero ese es otro problema.
Gracias
Edit : escribí un filtro rápido. Pegándolo aquí para que alguien más pueda usarlo como plantilla para escribir uno más complejo. Para poner en el paquete 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+"}"
Creo que tu respuesta se puede encontrar aquí:
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#templatetag
En resumen, desea utilizar {% templatetag openbrace %}
y {% templatetag closebrace %}
.
Edición: Django ahora también incluye esta funcionalidad fuera de la caja:
{% verbatim %} {{ blah blah }} {% endverbatim %}
La recomendación del lenguaje de plantillas Jinja también funciona con el motor de plantillas Django:
http://jinja.pocoo.org/docs/dev/templates/#escaping
La solución es la siguiente:
{{ ''{'' }}{{ id }}{{ ''}'' }}
Por supuesto, las otras dos respuestas funcionan, pero en mi opinión, esta es una menos detallada y más legible.
{% templatetag openbrace %}
vuelve extremadamente detallado para, por ejemplo, plantillas de javascript
He utilizado la etiqueta verbatim
de esta esencia con cierto éxito exactamente para este propósito que te permite hacer algo como
{{ 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 %}