如何修改django中的HttpResponse对象?

时间:2009-12-22 13:34:52

标签: django django-templates escaping httpresponse

我需要使用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()转义它然后渲染它。 什么是更清洁,更简单的方法?

3 个答案:

答案 0 :(得分:2)

默认情况下会转义从render_to_response通过< is converted to &lt; > is converted to &gt; ' (single quote) is converted to &#39; " (double quote) is converted to &quot; & is converted to &amp; 传递到模板的字符串。

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

  

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

{{1}}
  

同样,我们强调默认情况下此行为已启用。

答案 1 :(得分: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)

我不太确定另一端的人/浏览器会用这个,但听起来就像你要求的那样。

答案 2 :(得分:1)

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