gpt4 book ai didi

python - Whitenoise 和 django-compressor 导致压缩文件出现 404

转载 作者:行者123 更新时间:2023-11-28 20:41:29 27 4
gpt4 key购买 nike

尝试使用 whitenoisedjango-compressor 将 Django 应用程序部署到 Heroku。

使用 DEBUG = FalseCOMPRESS_ENABLED = True 将其部署到生产环境中,我所有的静态 Assets 都可以毫无问题地访问。但是,所有压缩文件都会返回 404,例如:

http://*.herokuapp.com/static/CACHE/css/fbfaa35dc638.css Failed to load resource: the server responded with a status of 404 (NOT FOUND)

启用 DEBUG 或禁用 COMPRESS_ENABLED 都可以解决问题,但这当然不是我想要的。

我还设置了 STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage',但更改它没有帮助。

一些设置(请注意,我有一个设置目录,例如 base.pylocal.py 等。这就是为什么我需要一个额外的 ../ 在路径上):

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, '../staticfiles')

STATICFILES_DIRS = (
os.path.join(BASE_DIR, '../static'),
)

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)

在我的基本模板中:

{% compress css %}
<link rel="stylesheet" href="{% static 'css/app.css' %}">
{% block css %}{% endblock %}
{% endcompress %}

[...]

{% compress js %}
<script src="{% static 'js/main.js' %}"></script>
{% block js %}{% endblock js %}
{% endcompress %}

同样,将它们从压缩 block 中移出可以解决这个问题。只是找不到压缩文件。

有什么想法吗?

编辑

我忘了提及我根据 deployment checklist 添加的一项设置,即: https://docs.djangoproject.com/en/1.8/ref/templates/api/#django.template.loaders.cached.Loader

TEMPLATES[0]['OPTIONS']['loaders'] = [
(
'django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]
),
]

删除此设置会使该页面再次工作。然而,JS 和 CSS 文件没有被压缩……这是怎么回事?

编辑2

这不是 Django staticfiles not found on Heroku (with whitenoise) 的副本:

  • 我问题中的问题来自 django-compressor,而不是单独的 whitenoise
  • 他们得到的不是 404,而是 500。
  • 他们的问题是他们忘记运行 collectstatic...这里不是这种情况。

最佳答案

这似乎是一个已知问题。

根据 Squebe 的说法 - “Compressor 的在线模式在 Heroku 上不起作用,因为 Whitenoise 仅在加载应用程序时检查静态文件夹(请参阅我对问题 #680 的评论)。要在生产中使用压缩器,我认为您需要使用它在离线模式下运行 python manage.py compress,然后使用 Heroku 的编译后 Hook 加载应用程序。”

No way to get this to work on Heroku #486

关于python - Whitenoise 和 django-compressor 导致压缩文件出现 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33105440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com