django模板:读取数据库响应文本为HTML

0 投票
2 回答
866 浏览
提问于 2025-04-17 10:02
  • 我正在收集用户输入,并把它们存储到数据库中,使用HTML标签来保持格式。
  • 比如,从数据库中获取的一个响应可能是:

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

  • 通常我只关心换行符。
  • 在从django模板读取这个响应时,我会这样做:
 <div id="right_suggest_div" name={{ suggestion.key }}>   
   {{ suggestion.text }}  
   <p class="padding">Votes: {{ suggestion.votes }} </p>
 </div>

问题: - 是否可以将 suggestion.text 作为HTML来渲染?

2 个回答

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>

这些内容。你基本上是把这些内容直接展示给你的用户。

4

默认情况下,Django会把像">"和"<"这样的符号替换成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 }}

撰写回答