Django, automatische HTML „Hygienisierung“, wenn HTML-Vorlage setzen, wie es zu stoppen?
-
30-09-2019 - |
Frage
Ich bin ein bisschen durch diese verwirrt, weil es scheint, dass Django Vorlagen optional HTML-Filter haben, aber dies scheint automatisch der Fall zu sein .. Ich mache diese Demo-Anwendung, wo der Benutzer eine Aktion tun, die ein Python-Skript, das abruft ruft eine uRL, mag ich dann das .. es ist alles in Ordnung, außer in einem neuen Fenster angezeigt werden, wenn die Anzeige zurückkommt, wird der HTML-Code in diesem Format hygienisiert (ich das sehen, wenn ich die Seite Quelle zu sehen, in dem Browser es als reguläres zeigt HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[
si_ST=new Date
Dies ist die normale HTML-Version der gleichen:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[ si_ST=new Date //]]></script><script type="text/javascript">//<![CDATA[ _G={ST:(si_ST?si_ST:new Date),Mkt:"en-
Ich Ausgeben dies nur zu einem Basisblock in meinem HTML-Template, hat die Vorlage keine andere Formatierung (kein HTML, usw.), nur 1 Block, in dem dieser Ausgang geht .. irgendwelche Ratschläge auf, warum dies geschieht und wie man die normalen HTML-Anzeige wird geschätzt .. danke
(also die Seite im Browser und nicht der HTML-Text zeigen würde)Lösung
Mit dem sicheren Filter:
{{ myvariable|safe }}
Wenn Sie große Teile Ihrer Vorlage müssen so behandelt (das heißt, wenn Sie sich mit |safe
immer und immer wieder finden), können Sie die autoescaping Voll Verkauf deaktivieren:
{% autoescape off %}
blah {{myvariable}} blah {{myothervariable}}
{% endautoescape %}
Andere Tipps
Werfen Sie einen Blick auf die „sichere“ Filter, das entweichende Djangos Standard deaktiviert:
http://docs.djangoproject.com/en/1.2 / ref / templates / builtins / # sicher
Es gibt auch autoescape die Kontrollen zu entkommen Block breit.