我有一个在Django和Django Rest Framework中开发的API。我们在“普通”Django中需要一个页面,每个月可能会打开一次(所以静态文件不需要CDN)。 Gunicorn + whitenoise就是我们的目标。
collectstatic
在构建阶段和构建阶段后都能正常工作。
页面上生成的网址为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" %}/>
答案 0 :(得分:2)
此响应可能为时已晚,但我很惊讶没有人注意到该错误。
您的模板如下:
<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在引号之间,路径后有一个空格。