如何阻止 Django 转义 # 符号

Posted

技术标签:

【中文标题】如何阻止 Django 转义 # 符号【英文标题】:How to stop Django from escaping the # symbol 【发布时间】:2017-04-05 08:32:40 【问题描述】:

我正在尝试将 SVG 精灵用于网站中的图标,如下所示:

<svg aria-hidden="true" class="icon">
    <use xlink:href="% static 'images/site-icons.svg#icon-twitter' %"></use>
</svg>

但是这不起作用,因为 # 被 Django 转义了,所以我最终得到:

<svg aria-hidden="true" class="icon">
    <use xlink:href="/static/images/site-icons.svg%23icon-twitter"></use>
</svg>

所以没有图标被渲染。 我已经隔离问题是转义,因为如果我将site-icons.svg 的内容粘贴到模板中,它就可以工作,然后做

<svg aria-hidden="true" class="icon">
    <use xlink:href="#icon-twitter"></use>
</svg>

所以问题在于转义。

有谁知道如何避免这种逃避的发生?

【问题讨论】:

相关:Is it possible to pass query parameters via Django's % url % template tag? 【参考方案1】:

需要把id移到静态标签后面

% static 'images/site-icons.svg#icon-twitter' %

应该是

% static 'images/site-icons.svg' %#icon-twitter

这背后的原因是静态标签的工作是找到静态文件的路径,所以它只需要文件的位置,之后需要添加任何额外的东西,这样当模板被渲染时,它就会显示为单个(连接?)链接

【讨论】:

以上是关于如何阻止 Django 转义 # 符号的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 MOYA/Alamfire 转义我的身体 json 参数?

如何阻止 Swift 在我的 [String] 中注入转义的单引号?

如何阻止我的命令行参数在 Maven 插件中被转义?

如何在 PHP 中替换/转义 U+2028 或 U+2029 字符以阻止我的 JSONP API 中断

如何在 PHP 中替换/转义 U+2028 或 U+2029 字符以阻止我的 JSONP API 中断

如何阻止变量符号被导出 macOS