【发布时间】:2012-10-03 00:14:41
【问题描述】:
我有一个模板,我需要在样式标签中嵌入一些来自模型的 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 过滤器,但我不确定这是不是最好的想法。
谢谢!
【问题讨论】:
-
你可以通过类似
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#{{m.startColor}}", endColorstr="#{{endColor}}") !important;, so that data is not mixed withthe html 来避免这个问题 -
感谢您的建议!但是,现在我必须将整个 CSS 规则集保留为文本块,所以我不能这样做。
-
您可以尝试在变量文本中交替使用单引号
'和模板中的双引号"。
标签: django filter django-templates