python - 如何阻止 Django 转义 # 符号

标签 python django svg escaping

我正在尝试为站点中的图标使用 SVG Sprite ,如下所示:

<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>

所以问题出在转义上。

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

最佳答案

需要把id移到static标签后面

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

应该是

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

这背后的原因是静态标签的工作是找到静态文件的路径,所以它只需要文件的位置,任何额外的东西都需要添加,以便在呈现模板时显示为单个(串联?)链接

关于python - 如何阻止 Django 转义 # 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40728775/

相关文章:

python - 字符串的总和包含一系列十进制数

Django 管理员 : Need to conditionally display fields

javascript - 在 svg 上绘制 OpenStreetMap 项目

javascript - d3 用一条线连接不同组的矩形

python - 对两组中的每个元素进行成对比较,并返回前 3 名的排名列表

python - TensorBoard:如何绘制梯度直方图?

Python virtualenv pip 安装 MySQL-Python 导致 "RuntimeError: maximum recursion depth exceeded"

python - 如何避免在 Django 中重复测试用例?

django 在模板中调用无请求 View 函数

javascript - 移动到 SVG 路径 (d3.js) 中的鼠标单击