2009-05-31 14 views

Répondre

0

Si vous utilisez django 1.0, vos variables de modèle seront déjà encodées et prêtes à être affichées. Vous utilisez également l'opérateur safe{{ var|safe }} si vous ne souhaitez pas l'activer globalement.

12

La chose la plus proche que je connaisse est cgi.escape.

2

Vous voulez probablement xml.sax.saxutils.escape:

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

Jetez un oeil à xml.sax.saxutils.quoteattr, il pourrait être plus utile pour vous

1

Le module html.entities (htmlentitydefs pour 2.x python) contient un dictionnaire qui devrait codepoint2name fais ce dont tu as besoin.

>>> 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

Je vote pour cela parce que je ne veux pas analyser quelque chose comme d'autres réponses, ou même faire une recherche et remplacer, je veux une seule fonction qui fait tout pour moi. – paulmorriss

1

Je pense que la façon la plus simple est d'utiliser simplement remplacer:

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

PHP échappe que ces quatre entités htmlspecialchars. Notez que si vous avez défini ENT_QUOTES en PHP, vous devez remplacer les guillemets par & # 039; plutôt que & ".

0

bâtiment sur la réponse de @ de garlon4, vous pouvez définir votre propre htmlspecialchars(s):

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