【问题标题】:Django autoescaping, ignoring autoescape off and |safeDjango自动转义,忽略自动转义关闭和|安全
【发布时间】:2011-09-12 03:54:31
【问题描述】:

我的 Django 过滤器没有做正确的事情。我希望在输出中看到实际的 html,但我看到的是 html 转义括号。我试过关闭自动转义,我试过|安全,我同时试过两者。没有喜悦。怎么回事?

<td>{% autoescape off %}{{ notif.output|safe|insert_breaks|linkify }}{% endautoescape %}</td>

我没有看到任何错误,只是真正不应该转义的自动转义文本。

【问题讨论】:

  • 也许您的自定义模板过滤器的更多信息(代码)?
  • insert_breaks 真的像 text = text.replace('\n', '
    ')...和 & lt;在输出中。
  • 您可以尝试在所有其他过滤器(insert_breakslinkify)之后添加|safe 吗?据我所知,过滤器是链式的。来自 Django 文档:“如果您正在链接过滤器,则在安全之后应用的过滤器会使内容再次变得不安全。”。
  • 我最后也尝试了安全。这是一个配置问题,因为同一主机上有多个实例。

标签: django templates filter escaping


【解决方案1】:

答案是:

在一台主机上运行多个版本的代码时,确保 settings.py 中的 template_dir 指向正确的实例。

【讨论】:

  • 有趣的猜测。我在 4 年里才看到过一次,但要弄清楚这件事真是太糟糕了。
【解决方案2】:

啊,我刚刚又读了一遍文档。答案是拥有任何filters after your safe makes the string unsafe again。所以要么把safe放在最后,要么把它放在最后再次

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 2015-06-08
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    相关资源
    最近更新 更多