我正在尝试将 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 'images/site-icons.svg#icon-twitter' %}

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

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

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

10-12 16:43
查看更多