我的一个视图中的以下代码返回未转义的html字符串,由于它是一个Ajax请求,因此无法在前端解析。
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))
纠正此问题的最简单方法是什么? 提前谢谢..
答案 0 :(得分:20)
Lakshman Prasad 的答案在技术上是正确的,但有点麻烦。 逃避文本的更好方法是(正如上面 miku 的评论中所建议的那样):
from django.utils.html import escape
return HttpResponse(escape(some_string))
答案 1 :(得分:5)
要在视图中向客户端返回纯HTML,请使用django.http.HttpResponse
from django.http import HttpResponse
def view(request)
# Do stuff here
output = '''
<html>
<head>
<title>Hey mum!</title>
</head>
</html>'''
return HttpResponse(output)
为防止Django模板系统在模板中转义HTML,只需使用|safe
过滤器:
response = "<img src='cats.png'/>"
# Meanwhile, in the template...
<div id="response">
{{response|safe}}
</div>
答案 2 :(得分:1)
默认情况下它应该转义。
但是,如果你愿意,你可以明确强制逃避。
from django.utils.safestring import mark_for_escaping
return HttpResponse(mark_for_escaping(loader.render_to_string(""""Render Response Syntax"""))