django-template:将数据库响应文本读取为HTML

时间:2012-01-11 20:28:30

标签: javascript python html django

  • 我正在收集用户输入并使用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 个答案:

答案 0 :(得分:4)

默认情况下,Django会替换“&gt;”之类的符号和“&lt;”与HTML实体。 我想,让它跳过HTML可以解决这个问题。

{% 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 }}

答案 1 :(得分:3)

这是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>

作为他们的输入。您基本上将向用户提供该内容。