django-template: читать текст ответа базы данных как HTML - PullRequest
0 голосов
/ 12 января 2012
  • Я собираю пользовательский ввод и сохраняю его в базе данных с тегами html для сохранения форматирования.
  • например: ответ из базы данных может быть

asdsad <br/>- 12321312<br/>- 332423<br/>* e23ee<br/>$ dweqw

  • Обычно меня волнуют только разрывы строк
  • Читая этот ответ из django-template, я делаю
 <div id="right_suggest_div" name={{ suggestion.key }}>   
   {{ suggestion.text }}  
   <p class="padding">Votes: {{ suggestion.votes }} </p>
 </div>

Вопрос: - Можно ли сделать suggestion.text как HTML?

Ответы [ 2 ]

4 голосов
/ 12 января 2012

По умолчанию Django заменит символы типа ">" и "<" на HTML-сущности. Я полагаю, что если пропустить экранирование HTML, это исправит ситуацию. </p>

{% autoescape off %}
<div id="right_suggest_div" name={{ suggestion.key }}>   
   {{ suggestion.text }}  
   <p class="padding">Votes: {{ suggestion.votes }} </p>
 </div>

{% endautoescape %} 

или используйте фильтр safe {{ suggestion.text|safe }}

3 голосов
/ 12 января 2012

Вот для чего safe .

<div id="right_suggest_div" name={{ suggestion.key }}>   
  {{ suggestion.text|safe }}  
  <p class="padding">Votes: {{ suggestion.votes }} </p>
</div>

Но, пожалуйста, подумайте о ситуации, когда пользователь вводит

<script>//do so nasty stuff</script>

в качестве ввода.По сути, вы будете предоставлять этот контент своим пользователям.

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