Django, HTML automatique « désinfectante » lors de la mise à HTML modèle, comment l'arrêter?
-
30-09-2019 - |
Question
Je suis un peu confus par cela parce qu'il semble que les modèles Django ont des filtres HTML facultatifs, mais cela semble se produire automatiquement .. Je fais cette application de démonstration où l'utilisateur va faire une action qui appelle un script python qui permet de retrouver une url, je veux alors afficher dans une nouvelle fenêtre .. son tout va bien, sauf lorsque l'affichage revient, le HTML est désinfecté dans ce format (je vois quand je vois la source de la page, dans le navigateur, il montre aussi régulier 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
est la version régulière HTML du même:
<!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-
Je suis juste sortie à un bloc de base dans mon modèle html, le modèle n'a pas d'autre mise en forme (pas de HTML, etc.), à seulement 1 bloc où cette sortie va .. des conseils sur pourquoi cela se passe et comment afficher le code HTML régulier (il montrerait la page dans le navigateur et non le texte HTML) est apprécié .. merci
La solution
Utilisez le filtre SafeSearch:
{{ myvariable|safe }}
Si vous avez besoin d'une grande partie de votre modèle goûterez comme celui-ci (qui est, si vous vous trouvez à l'aide |safe
plus et plus), vous pouvez désactiver toute vente autoescaping:
{% autoescape off %}
blah {{myvariable}} blah {{myothervariable}}
{% endautoescape %}
Autres conseils
Jetez un coup d'oeil sur le filtre « sûr », ce qui désactive par défaut de Django s'échapper:
http://docs.djangoproject.com/en/1.2 / ref / templates / builtins / # sécurité
Il y a aussi autoescape qui contrôle s'échappant bloc large.