首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态文件Whitenoise Heroku Django问题

静态文件Whitenoise Heroku Django问题
EN

Stack Overflow用户
提问于 2017-10-09 20:45:23
回答 1查看 541关注 0票数 1

我在Django和Django Rest框架中开发了一个API。我们需要“普通”Django中的一个页面,它可能每个月打开一次(所以静态文件不需要CDN )。我们所做的就是Gunicorn + whitenoise。

collectstatic在构建阶段和构建后阶段都能很好地工作。

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

相关django设置:

代码语言:javascript
复制
# 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'

repo中的相关文件在/static_folder/css/edit_card.css中,在运行collectstatic后的heroku实例上的相关文件在static_media/css/edit_card.a1c6e0f9f12e.css中(以及正常版本和其他压缩文件)。

我可以手动访问这个链接url/static/css/edit_card.css,这是非常奇怪的。

DEBUG = True运行的时候,这是很好的。在False/production中,情况并非如此。

有人能给我指明正确的方向吗?谢谢。

编辑:

Template

代码语言:javascript
复制
{% load static %}
<link rel="stylesheet" type="text/css" href={% static "css/edit_card.css" %}/>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-28 23:29:21

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

您的模板如下:

代码语言:javascript
复制
<link rel="stylesheet" type="text/css" href={% static "css/edit_card.css" %}/>

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

解决办法是:

代码语言:javascript
复制
<link rel="stylesheet" type="text/css" href="{% static "css/edit_card.css" %}" />

URL在引号之间,在路径后面有一个空格。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46654692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档