1

我有一个模板,我需要在样式标签中嵌入一些来自模型的 CSS,如下所示:

<style>{{m.get_css_text}}</style>

(如果重要,m 实际上是一个 for-in var)

除了仅在 IE 中发生的一个故障外,这没有问题。我在 CSS 中有一条规则包括一个过滤规则,它使用引号,像这样 -

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f5f5f5") !important;

django 的默认转义行为会转义引号,这会破坏 CSS 规则,这会破坏 IE 中适用该规则的 CSS。

使用 |safe 过滤器当然可以解决这个问题,但我宁愿不使用它。目前,持有 CSS 的模型只能由我的员工编辑,但将来可以由我们的用户创建。

我的问题是——我应该使用什么过滤器来防止引号等转义,但要保证标签安全?到目前为止,我唯一的想法是使用 removetags 过滤器,但我不确定这是不是最好的主意。

谢谢!

4

1 回答 1

0

只需使用 and 的组合striptagssafe即:

<style>{{m.get_css_text|striptags|safe}}</style>

删除 HTML 标记后,就没有什么“不安全”了safe(对不起,我忍不住了)。

于 2012-10-12T14:03:42.093 回答