首页 > 解决方案 > Django 内置服务器无法解码 URL 参数

问题描述

我不确定这是否是特定于 Django 的问题,但现在我在我的项目中看到了它。

因为浏览器倾向于缓存图标并且我已经为我的网站更改了它们,所以我想出了一个技巧来强制之前访问过我网站的任何人接收新图标,添加“?” 后跟一些随机字符到图像文件名,所以目前是这样的:

<link rel="icon" type="image/png" sizes="32x32" href="{% static 'images/favicons/favicon-32x32.png?v=Gv6qnaoWO5' %}">

现在的问题是,网站图标没有加载,当我检查源代码时,我看到了这个:

<link rel="icon" type="image/png" sizes="32x32" href="/static/images/favicons/favicon-32x32.png%3Fv%3DGv6qnaoWO5">

当我点击上面的链接时,我404django.views.static.serve. 如果我删除“?” 和其他角色,一切正常。

如果没记错的话,这是特殊字符的正常编码,Web 服务器应该对其进行解码,但这不会发生在 Django 的内置服务器上。

那么,是否有解决此问题的方法,或者我应该等到将站点移至生产环境?

标签: django

解决方案


static获取文件名,并构建 URL。文件名没有查询参数。事后向其添加查询参数:

href="{% static 'images/favicons/favicon-32x32.png' %}?v=Gv6qnaoWO5">

推荐阅读