2009-05-31 10 views

Antwort

0

Wenn Sie django 1.0 verwenden, sind Ihre Vorlagenvariablen bereits codiert und können angezeigt werden. Sie können auch den Operator safe{{ var|safe }} verwenden, wenn Sie nicht möchten, dass er global eingeschaltet ist.

12

Das nächste, was ich weiß, ist .

2

Sie wollen wahrscheinlich xml.sax.saxutils.escape:

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

Werfen Sie einen Blick auf xml.sax.saxutils.quoteattr, könnte es sinnvoller sein, für Sie

1

Das html.entities Modul (htmlentitydefs für Python 2.x) codepoint2name ein Wörterbuch enthält die sollte Mach was du brauchst.

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

Ich stimme dafür, weil ich nichts wie einige der anderen Antworten parsen möchte, oder auch nur suchen und ersetzen möchte, ich möchte eine einzige Funktion, die alles für mich tut. – paulmorriss

1

Ich denke, der einfachste Weg, ersetzen Sie einfach zu bedienen ist:

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

PHP nur die vier Einheiten mit htmlspecialchars entkommt. Beachten Sie, dass Sie, wenn Sie ENT_QUOTES in PHP festgelegt haben, die Anführungszeichen durch & # 039; ersetzen müssen. eher als & quot ;.

0

Aufbauend auf @ garlon4 Antwort, können Sie Ihre eigenen htmlspecialchars(s) definieren:

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