En mi core.html tengo un bloque etiquetado javascript. Sería genial si pudiera agregar más líneas a este bloque sin sobreescribir todo en él.¿Podemos agregar un {% block%} en lugar de sobreescribirlo?
Respuesta
{% block javascript %}
{{ block.super }}
... more content ...
{% endblock %}
Usando block.super
funciona bien cuando se extiende una plantilla pero no tan bien cuando se incluye uno, es decir:
{% extends "base.html" %} vs. {% include "partial.html" %}
decir que quiere incluir una plantilla en el medio de su página y también le gustaría agregar algo de javascript en un bloque al final de la página: se bloqueará la llamada al block.super
en la plantilla incluida.
Cf. Django emite #7324, #12008, #13399 y related update to the documentation. Cf. include tag nota:
La etiqueta include debe ser considerada como una implementación de “hacer que esta subtemplate e incluir el código HTML”, no como “analizar esta subtemplate e incluir su contenido como si fuera parte de los padres”. Esto significa que no hay un estado compartido entre las plantillas incluidas; cada inclusión es un proceso de representación completamente independiente.
Los bloques se evalúan antes de que se incluyan. Esto significa que una plantilla que incluye bloques de otra contendrá bloques que ya han sido evaluados y procesados, no bloques que pueden ser reemplazados por, por ejemplo, una plantilla extendida.
En ese caso, le recomiendo usar django-sekizai, cosa que le permiten hacer cosas como:
{% load sekizai_tags %}
⎧ <p>Some content</p>
<p>Some content</p> | {% addtoblock "js" %}
| <script type="text/javascript">
{% include "partial.html" %} -> ⎨ alert("Hello django-sekizai");
| </script>
<p>Some more content</p> ⎩ {% endaddtoblock %}
{% render_block "js" %}
La razón principal por la que empecé este proyecto fue la falta de un buen marco de medios (css/js) en django y django-cms. Sí, existe la clase Media utilizada en los formularios de django, pero realmente eso no funciona tan bien. Por lo general, los chicos frontend quieren decidir si se incluirán los archivos css y javascript y no quieren tener que editar los archivos Python para cambiarlos, ni tampoco quiero que cambien mis archivos Python. Por lo tanto, hubo una necesidad de permitirle editar los contenidos de las plantillas que están antes o después del punto donde se encuentra ahora. También quería eliminar los duplicados. Como resultado escribí django-sekizai, que hace exactamente eso. Es similar a los bloques, simplemente en lugar de heredarlos, los extiendes.
- 1. cómo agregar líneas a un registro vim sin sobreescribirlo
- 2. ¿Qué podemos usar en lugar de nstimer?
- 3. Cómo agregar "style = display:" block "" a un elemento usando jquery
- 4. ¿Cómo podemos usar canales en Go en lugar de mutex?
- 5. Extendiendo la función del prototipo sin sobreescribirlo
- 6. ¿Podemos usar <body> en lugar de #container div?
- 7. try/catch block en Arduino
- 8. Agregar un registro a la tienda en un lugar específico
- 9. Ajax reemplazar en lugar de agregar
- 10. ¿Agregar texto a un atributo en lugar de reemplazarlo?
- 11. ¿Parallel.ForEach Block?
- 12. ¿Qué es mejor usar, un bloque __try/__ except block o un try/catch block?
- 13. ¿Se ejecuta `finally` block en caso de que haya` return` dentro de un `try` o un` catch` block?
- 14. concat multiple block en jinja2?
- 15. ¿Cómo pasar html para un link_to block?
- 16. Filas totales que podemos agregar a la tabla de datos
- 17. UI Thread Block
- 18. Visual Studio: Agregar elemento/Agregar como enlace en lugar de solo Agregar
- 19. BadPaddingException: pad block corrupto
- 20. ¿Podemos usar un ScrollView dentro de LinearLayout?
- 21. Objective-C Block Sintaxis
- 22. pthread_mutex_t VS @synchronized block?
- 23. Lanzar excepciones en un PHP Try Catch block
- 24. ¿Podemos agregar comentarios o un archivo README a una base de datos/tabla de SQL Server?
- 25. ¿Podemos usar ejb-jar.xml en lugar de anotaciones para MessageDrivenBean (MDB) en EJB 3.0?
- 26. ¿Puede jQuery. Cargar agregar en lugar de reemplazar?
- 27. Block AirPlay Mirroring en iOS 5
- 28. Varias pruebas en Try/Except Block
- 29. display: inline vs display: block
- 30. ¿Podemos escribir una Hashtable en un archivo?
Funciona muy bien, gracias! :) – PKKid