如何在Django中部分转义模板变量

时间:2014-01-20 12:42:48

标签: python django xss

我正在尝试在Django管理表单的验证消息中突出显示一些文本。

结果是这样的

  valid_part
  <span style="background-color:yellow">invalid_part</span> 
  another_valid_part

我希望保留<span ...></span>,但用户刚输入的valid_partinvalid_part应该转义为避免XSS。< / p>

2 个答案:

答案 0 :(得分:1)

在视图部分:

 'parts': {
   'valid1': mark_safe(valid1),
   'valid2': mark_safe(valid2),
   'invalid': invalid,
 }

在模板中:

{{ parts.valid1 }} {{ parts.invalid }} {{ parts.valid2 }}

答案 1 :(得分:1)

您可以执行以下操作:

#views.py
from django.utils.html import escape
valid_part = "<i> hello1 </i>" #needs escaping
invalid_part = "<i> hello2 </i>" #needs escaping
error = "{0} <span style='background-color:yellow'>{1}</span>".format(escape(valid_part),escape(invalid_part))
return render_to_response('my.html',{"error":error})

在模板中:

#my.html
{{ error|safe }}