django模板:读取数据库响应文本为HTML
- 我正在收集用户输入,并把它们存储到数据库中,使用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 }}