2009-05-31 18 views

Respuesta

0

Si está utilizando django 1.0, las variables de su plantilla ya estarán codificadas y listas para su visualización. También puede utilizar el operador safe{{ var|safe }} si no desea que esté activado globalmente.

2

es probable que desee xml.sax.saxutils.escape:

from xml.sax.saxutils import escape 
escape(unsafe, {'"':'"'}) # ENT_COMPAT 
escape(unsafe, {'"':'"', '\'':'''}) # ENT_QUOTES 
escape(unsafe) # ENT_NOQUOTES 

Tenga una mirada en xml.sax.saxutils.quoteattr, podría ser más útil para usted

1

El módulo html.entities (htmlentitydefs para Python 2.x) contiene un diccionario codepoint2name que debería haz lo que necesites

>>> import html.entities 
>>> html.entities.codepoint2name[ord("&")] 
'amp' 
>>> html.entities.codepoint2name[ord('"')] 
'quot' 
6
from django.utils.html import escape 
print escape('<div class="q">Q & A</div>') 
+1

Estoy votando por esto porque no quiero analizar nada como algunas de las otras respuestas, o incluso buscar y reemplazar, quiero una sola función que lo haga todo por mí. – paulmorriss

1

creo que la forma más sencilla es utilizar reemplazar:

text.replace("&", "&amp;").replace('"', "&quot;").replace("<", "&lt;").replace(">", "&gt;") 

PHP sólo se escapa esas cuatro entidades con htmlspecialchars. Tenga en cuenta que si tiene ENT_QUOTES configurado en PHP, debe reemplazar las comillas con & # 039; en lugar de & quot ;.

0

Basándose en respuesta garlon4 @, puede definir su propio htmlspecialchars(s):

def htmlspecialchars(text): 
    return (
     text.replace("&", "&amp;"). 
     replace('"', "&quot;"). 
     replace("<", "&lt;"). 
     replace(">", "&gt;") 
    ) 
Cuestiones relacionadas