Django集成xhtml2pdf获取静态文件路径触发SuspiciousFileOperation错误
检查Django核心静态配置
进入容器执行python manage.py shell,打印settings.STATIC_ROOT和settings.STATICFILES_DIRS的值,确认是否存在硬编码的/opt/project/myproject/static路径。同时排查项目的settings.py、.env文件,以及Docker启动配置(Dockerfile/docker-compose.yml)中是否通过环境变量注入了错误的静态路径。检查xhtml2pdf相关的文件查找逻辑
核对官方示例代码中是否有自定义的静态文件查找逻辑,比如重写pisaFileLoader或修改finders.find的调用逻辑,确认是否残留了旧的/opt路径配置。清理Docker构建缓存并重新构建
旧的构建缓存可能保留了历史配置,执行docker-compose build --no-cache或docker build --no-cache重新构建镜像,避免旧路径配置被带入容器。验证collectstatic执行结果
在容器内运行python manage.py collectstatic --noinput,检查收集后的静态文件是否存储在/app/static目录下,同时确认收集过程中未生成含错误路径的配置文件。排查容器启动时的环境变量与参数
查看docker-compose.yml的environment段,或容器启动命令中的-e参数,确认是否有设置STATIC_ROOT等静态路径相关的环境变量,且值为正确的/app下路径。检查第三方依赖与版本一致性
对比非Docker环境与容器内的xhtml2pdf版本是否一致;排查是否有其他静态文件相关的Django扩展(如whitenoise),其配置中是否存在错误路径。
内容的提问来源于stack exchange,提问作者PoDuck

