Python 带有压缩静态文件的Django Whitenoise

Python 带有压缩静态文件的Django Whitenoise,python,django,django-compressor,whitenoise,Python,Django,Django Compressor,Whitenoise,我无法让我的django项目运行whitenoise和压缩静态文件(包括libsas)。在下面的链接中,我了解到只有离线压缩所需的静态文件才有可能。但是当我启动docker容器时,运行compress命令 docker-compose -f production.yml run --rm django python manage.py compress 给我一个错误: ValueError: Missing staticfiles manifest entry for 'sass/app.sc

我无法让我的django项目运行whitenoise和压缩静态文件(包括libsas)。在下面的链接中,我了解到只有离线压缩所需的静态文件才有可能。但是当我启动docker容器时,运行
compress
命令

docker-compose -f production.yml run --rm django python manage.py compress
给我一个错误:

ValueError: Missing staticfiles manifest entry for 'sass/app.scss'
在尝试请求时,该站点给了我以下错误(如预期的那样?):

设置如下(使用cookiecutter django构建,请参阅下面的链接以获取完整的代码库):

因此,在互联网上搜索1天后;我被卡住了。。。谢谢您的帮助或建议

代码库:

这是用什么做的

包括对
config/setttings/production.py的以下更改:

COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage"  # Instead of pre-set "storages.backends.s3boto3.S3Boto3Storage"
COMPRESS_ROOT = STATIC_ROOT  # Just in case
COMPRESS_OFFLINE = True  # Needed to run compress offline
可能的相关链接:

编辑

用贾斯汀的答案解决了这个问题(见下文,有额外的改动)。 我的错误是试图用已经运行的容器压缩文件,这给了我上面的错误。使用以下行更改Dockerfile后(注意重复的
collectstatic
cmd!):

重建形象一切都很有魅力:)
此外,与上面的设置不同,我必须在我的设置/env文件中设置
COMPRESS\u ENABLED=True

我也有同样的问题

将此添加到项目/compose/production/django/start

python /app/manage.py compress --force
i、 e


这很奇怪,但效果很好

使用whitenoise收集和压缩静态文件

python manage.py collectstatic --clear
设置压缩存储='compressor.STORAGE.BrotliCompressorFileStorage' 在缓存目录中生成.br文件的步骤

python manage.py compress --force
python manage.py compress --force
设置压缩存储='compressor.STORAGE.gzip压缩文件存储' 在缓存目录中生成.gz文件

python manage.py compress --force
python manage.py compress --force
要向whitenoise添加新的压缩文件:manifest.json,manifest.json.gz, manifest.json.br --没有后处理选项是告诉whitenoise不要再次压缩静态文件

python manage.py collectstatic --no-post-process
确保按顺序运行这些命令

测试whitenoise是否工作

python manage.py runserver --nostatic

嘿,贾斯汀,非常感谢你。对我来说,在compress命令之后包含第二个
python/app/manage.py collectstatic--noinput
之后,它就工作了。以前,文件已经压缩,但whitenoise没有看到/接受它们?!现在,一切都好了!
python manage.py collectstatic --no-post-process
python manage.py runserver --nostatic