django - 通过 amazon S3 在 django 应用程序中未提供图标
问题描述
我有一个 Django 应用程序,其中包含通过 Amazon S3 提供的静态文件。除了诸如 FontAwesome 之类的图标之外,所有静态文件都已正确提供(CSS、js、ico、图像..)。
这些文件的位置在源代码中正确设置,我不知道如何调试它。
如下图所示,元数据中的 Content-Type 设置正确。
编辑***
问题来自包含 URL 链接的 font-awesome.css 文件。
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),
url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),
url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
所以我尝试了以下方法:
{% load static %}
@font-face {
font-family: 'FontAwesome';
src: url('{% static '/fonts/fontawesome-webfont.eot?v=4.7.0' %}');
src: url('{% static '/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0' %}') format('embedded-opentype'),
url('{% static '/fonts/fontawesome-webfont.woff2?v=4.7.0' %}') format('woff2'),
url('{% static '/fonts/fontawesome-webfont.woff?v=4.7.0' %}') format('woff'),
url('{% static '/fonts/fontawesome-webfont.ttf?v=4.7.0' %}') format('truetype'),
url('{% static '/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular' %}') format('svg');
font-weight: normal;
font-style: normal;
}
但在源代码中,它只是在 CSS 文件中显示,没有用它的值替换 {% static %}。
这是项目的树:
编辑2***
实际上问题不是来自 ulrs。即使正确的 ulrs 指向 s3.amazonaws 上的文件,它们的图标也不会显示。
示例:在我的源代码中,我有
<style>
@font-face {
font-family: 'icomoon';
src: url("https://mybucket.s3.amazonaws.com/static/font/fonts/icomoon.eot");
src: url("https://mybucket.s3.amazonaws.com/static/font/fonts/icomoon.eot") format('embedded-opentype'),
url("https://mybucket.s3.amazonaws.com/static/font/fonts/icomoon.ttf") format('truetype'),
url("https://mybucket.s3.amazonaws.com/static/font/fonts/icomoon.woff") format('woff'),
url("https://mybucket.s3.amazonaws.com/static/font/fonts/icomoon.svg") format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-noun_visitors:before {
content: "\e900";
}
</style>
并且单击 url 会带来可下载的相应文件。
但是这些图标仍然没有显示在网站上。我可以将 CDN 用于 FontAwesome,但不能用于上面的自定义图标。
解决方案
推荐阅读
- python - 熊猫使用“b”列之前和之后的单元格平均值填充“a”列
- python-3.x - 使用python比较2个图像内容
- c# - Azure C# Cosmos DB:插入数据时缺少必需的属性“id”
- swagger-ui - Springfox swagger-ui 3.0.0 不调出 swagger-ui.html 页面
- node.js - 如何保存 jwt 令牌以在下一个请求中使用?在nodejs中
- java - 如果发生 StackOverflowError,有没有办法在 Java 中查看“堆栈内存转储”
- node.js - 如何在 NodeJS 中模拟嵌套依赖项
- speech-to-text - .opus 音频文件的谷歌语音到文本配置是什么样的
- android - 如何使用地图功能将列表从一种类型更改为另一种类型
- c# - HTTP 函数 C# SQL 异步