如何阻止 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] 中注入转义的单引号?
如何在 PHP 中替换/转义 U+2028 或 U+2029 字符以阻止我的 JSONP API 中断