我需要使用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()转义它然后渲染它。 什么是更清洁,更简单的方法?
答案 0 :(得分:2)
默认情况下会转义从render_to_response
通过< is converted to <
> is converted to >
' (single quote) is converted to '
" (double quote) is converted to "
& is converted to &
传递到模板的字符串。
请参阅: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/