2009-10-09 15 views
5

En mi administración, que tienen un área de texto donde el usuario puede html de entrada:¿Cómo puedo inyectar html real del modelo a la plantilla?

<ul> 
    <li>blah</li> 
</ul> 
<p> 
    Stuffs 
</p> 

Cuando pulso lo anterior a mi plantilla y ver el código fuente de la página, me sale:

&lt;ul&gt; 
    &lt;li&gt;blah&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt; 
    Stuffs 
&lt;/p&gt; 

¿Qué debo hacer con mi salida para que vea html real en el origen de la página?

Respuesta

6

necesita el filtro 'seguro'. Como está autoescalado.

{{ my_html|safe }} 
0

Consulte la documentación de etiquetas de plantilla here, consulte la descripción autoescape etiqueta.

0

Por "área de texto", ¿se refiere a <textarea>?

Porque si es así, escapando <-&lt; (y otros) es lo que debe hacerlo dentro de un área de texto o cualquier otro elemento HTML: Django está haciendo lo correcto. Verá la versión correcta y decodificada del texto en la página; a quién le importa cómo se ve la fuente?

Si no escapar de los contenidos de un área de texto que no sólo están generando HTML no válido, que está también abrirse a los ataques de los que las contribuciones de los usuarios:

</textarea> 
<script> 
    steal(document.cookie); 
    location.href= 'russian malware site'; 
    // etc. 
</script> 
Cuestiones relacionadas