Python 带有压缩静态文件的Django Whitenoise
我无法让我的django项目运行whitenoise和压缩静态文件(包括libsas)。在下面的链接中,我了解到只有离线压缩所需的静态文件才有可能。但是当我启动docker容器时,运行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
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