0

我需要转义使用 render_to_response 返回的 html。我找不到任何合适的文档。有人可以指出某个方向吗?

代码是:

return render_to_response(template_name, {return render_to_response(template_name, {
            'form': form,
            redirect_field_name: redirect_to,
            'site': current_site,
            'site_name': current_site.name,
        }, context_instance=RequestContext(request))

在这里,我需要对响应 html 文本进行转义。我知道正在读取字符串中的模板文件并使用 re.escape() 对其进行转义然后渲染它。有什么更清洁和更简单的方法来做到这一点?

4

3 回答 3

2

默认情况下,从视图传递到模板的字符串render_to_response被转义。

请参阅:http ://docs.djangoproject.com/en/dev/topics/templates/#id2

默认情况下,在 Django 中,每个模板都会自动转义每个变量标签的输出。具体来说,这五个字符被转义:

< is converted to &lt;
> is converted to &gt;
' (single quote) is converted to &#39;
" (double quote) is converted to &quot;
& is converted to &amp;

同样,我们强调默认情况下此行为是开启的。

于 2009-12-22T13:37:22.410 回答
2

听起来您希望整个响应都被转义——这是真的吗?这似乎有点奇怪,但你当然可以做到。

import django.utils.html as html
string = render_to_string(<all of the args to render_to_response>)
escaped_string = html.escape(string)
return HttpResponse(escaped_string)

我不太确定另一端的人/浏览器会对此做什么,但这听起来像你所要求的。

于 2009-12-22T18:33:51.563 回答
1

您可以使用escape模板过滤器或autoescape模板标签。请参阅http://docs.djangoproject.com/en/dev/ref/templates/builtins/

于 2009-12-22T13:41:28.533 回答