Django, автоматическая «санация» HTML при помещении HTML в шаблон, как это остановить? - PullRequest
4 голосов
/ 24 августа 2010

Меня это немного смущает, потому что кажется, что шаблоны Django имеют необязательные фильтры HTML, но это, кажется, происходит автоматически. Я делаю это демонстрационное приложение, в котором пользователь будет выполнять действие, которое вызывает скрипт Python, который извлекает URL, затем я хочу отобразить это в новом окне ... все хорошо, за исключением случаев, когда отображение возвращается, HTML очищается в этом формате (я вижу это при просмотре исходного кода страницы, в браузере он отображается как обычный 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

это обычная 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 //]]></script><script type="text/javascript">//<![CDATA[ _G={ST:(si_ST?si_ST:new Date),Mkt:"en-

Я просто вывожу это в базовый блок в моем html-шаблоне, у шаблона нет другого форматирования (без HTML и т. Д.), Только в 1 блоке, куда идет этот вывод ... любые советы о том, почему это происходит и как приветствуется обычный HTML-код (чтобы он отображал страницу в браузере, а не текст HTML). Спасибо

Ответы [ 3 ]

8 голосов
/ 24 августа 2010

Используйте безопасный фильтр:

{{ myvariable|safe }}

Если вам нужно обрабатывать большие части шаблона (например, если вы используете |safe снова и снова), вы можете отключить автоэкранированиеоптовые продажи:

{% autoescape off %}
blah {{myvariable}} blah {{myothervariable}}
{% endautoescape %}
5 голосов
/ 24 августа 2010

Взгляните на «безопасный» фильтр, который отключает экранирование по умолчанию в Django:

http://docs.djangoproject.com/en/1.2/ref/templates/builtins/#safe

2 голосов
/ 24 августа 2010

Существует также autoescape , который контролирует выходящий блок в ширину.

...