You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/third-party/webdev/django/templates.md
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -791,15 +791,18 @@ Lo que nos quedaría es utilizar el filtro creado en alguna plantilla:
791
791
792
792
Hay ocasiones en las que nos interesa implementar un filtro que devuelva código HTML. En principio lo haríamos de la misma forma que se ha visto anteriormente devolviendo una cadena de texto con el código HTML correspondiente.
793
793
794
-
Pero hay que tener en cuenta que, por razones de seguridad, Django *escapa* dicho HTML y no lo veremos renderizado en la plantilla final. Es por ello que debemos hacer uso de la función [`mark_safe`](https://docs.djangoproject.com/en/stable/ref/utils/#django.utils.safestring.mark_safe).
794
+
Pero hay que tener en cuenta ciertos aspectos de seguridad:
795
+
796
+
1. Si el código HTML que vamos a devolver desde el filtro contiene potencial información proveniente del usuario (vía formulario por ejemplo), es altamente recomendable utilizar la función [`format_html`](https://docs.djangoproject.com/en/stable/ref/utils/#django.utils.html.format_html) que se encarga de escapar sus argumentos. Evitaríamos por ejemplo ataques XSS.
797
+
2. Si el código HTML que vamos a devolver contiene información confiable, necesitamos «marcarlo como seguro» para que Django realmente lo renderice en la plantilla final. Para ello haríamos uso de la función [`mark_safe`](https://docs.djangoproject.com/en/stable/ref/utils/#django.utils.safestring.mark_safe).
795
798
796
799
Un <span class="example">ejemplo:material-flash:</span> podría ser mostrar un determinado «post» con un formato HTML destacado:
0 commit comments