静态文件白噪声 Heroku Django 问题



我有一个用Django和Django Rest Framework开发的API。我们需要一个"普通"Django页面,它可能每月打开一次(所以静态文件不需要CDN)。独角兽+白噪声是我们继续前进的。

collectstatic在构建阶段和构建后阶段都能正常工作。

页面上生成的 url href=/static/css/edit_card.a1c6e0f9f12e.css/但控制台显示找不到该资源的 404,并且没有应用于页面的样式。

相关 Django 设置:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_media/')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR + "/static_folder/"),
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

存储库中的相关文件处于/static_folder/css/edit_card.css运行 collectstatic 后 heroku 实例上的相关文件在 static_media/css/edit_card.a1c6e0f9f12e.css(连同普通版本和其他压缩文件)

我可以手动访问此链接url/static/css/edit_card.css这太奇怪了。

这在DEBUG = True时工作正常。在False/生产中时,它不会。

有人可以指出我正确的方向吗?谢谢。

编辑:

Template

{% load static %}
<link rel="stylesheet" type="text/css" href={% static "css/edit_card.css" %}/>

这个响应可能为时已晚,但我很惊讶没有人注意到这个错误。

您的模板如下:

<link rel="stylesheet" type="text/css" href={% static "css/edit_card.css" %}/>

问题是 href 属性没有被引号,并且它将最后一个/作为路径的一部分。这就是为什么URL是:href=/static/css/edit_card.a1c6e0f9f12e.css/(注意末尾的/)。

解决方案是:

<link rel="stylesheet" type="text/css" href="{% static "css/edit_card.css" %}" />

URL 位于引号之间,路径后有一个空格。

最新更新