13

我想要的是堆栈溢出。用户可以 HTML 格式化他们的文本输入,并且页面应该以完全相同的方式呈现,

我使用wmd.js来存储格式化的输入,考虑我有一个{{variable}}带有字符串值的上下文变量"<p>something</p>"。当我渲染模板时,

{{variable}} outputs <p>something</p>

and {{variable|safe}} also output <p>something</p>

它将 html 标记显示为页面中的文本。如何在 中呈现 HTML 标记,{{variable}}但不将它们显示为纯文本。

模板

    <div id='thread_answer_content' >
        {% for answer in question.answer_set.all %}
            {{answer.answerbody|safe}}
        {% endfor %}
    </div>

风景

def detail(request,question_id):
q = get_object_or_404(Question,pk=question_id)
return render_to_response('CODE/detail.html',{'question':q},
        context_instance = RequestContext(request)
    )

这是问题的 django 管理页面,顺便说一下,我正在使用 sqlite3 在此处输入图像描述

4

4 回答 4

24

use tag : http://docs.djangoproject.com/en/dev/ref/templates/builtins/#autoescape

{% autoescape off %}{{ variable }}{% endautoescape %} 
于 2012-12-27T13:38:58.857 回答
2

对于简单的 HTML 格式,使用<p>{{something}}</p>. 而Javascript的方式是,

<script type="text/javascript">
    var variable  =  "<p>{{something}}</p>";
    document.write(variable);
</script>

如果它{{something}}本身包含 HTML 标签,那么{{something|safe}}它本身应该可以工作,除非你有{% autoescape on %}. 有关更多过滤和格式化,请参阅内置模板标签和过滤器

于 2012-12-26T07:04:56.593 回答
2

您可能想要使用escape来渲染它,而不是safe.

{{ variable|escape }}
于 2012-12-25T09:50:02.360 回答
0

我认为另一种方法是使用firstof标签

请注意,firstof 标记中包含的变量不会被转义。这是因为模板标签不会转义它们的内容。打印变量中包含的任何 HTML 或 Javascript 代码都将按原样呈现,这可能会导致安全问题。如果您需要转义 firstof 标签中的变量,您必须明确地这样做

{% firstof variable %}
于 2013-01-03T20:29:07.600 回答