Как ввести фактический HTML из модели в шаблон? - PullRequest
5 голосов
/ 09 октября 2009

У моего администратора есть текстовая область, в которую пользователь может ввести html:

<ul>
  <li>blah</li>
</ul>
<p>
  Stuffs
</p>

Когда я нажимаю на шаблон выше и просматриваю источник страницы, я получаю:

&lt;ul&gt;
  &lt;li&gt;blah&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  Stuffs
&lt;/p&gt;

Что мне делать с выводом, чтобы я мог видеть фактический html в источнике страницы?

Ответы [ 3 ]

6 голосов
/ 09 октября 2009

вам нужен «безопасный» фильтр. Как это автоматически скрывается.

{{ my_html|safe }}
0 голосов
/ 09 октября 2009

Под «текстовой областью» вы подразумеваете <textarea>?

Потому что, если это так, экранирование от < до &lt; (и др.) - это то, что вы должны делать внутри текстовой области или любого другого элемента HTML: Django делает все правильно. Вы видите правильную, расшифрованную версию текста на странице; кого волнует, как выглядит источник?

Если вы не избегаете содержимого текстовой области, вы не только генерируете недопустимый HTML, вы также открываете себя для атак, когда пользователь вводит:

</textarea>
<script>
    steal(document.cookie);
    location.href= 'russian malware site';
    // etc.
</script>
0 голосов
/ 09 октября 2009

См. Документацию по тегам шаблона здесь , проверьте описание тега autoescape.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...