Django部署Heroku报htmlmin无MarkRequestMiddleware错误如何解决
修复方案
根本原因
该错误由本地与Heroku环境安装的django-htmlmin依赖版本不一致导致:旧版django-htmlmin包含MarkRequestMiddleware中间件,0.11.0及以上版本已将该中间件废弃移除,若requirements.txt未锁定版本,Heroku会默认拉取最新版,就会触发类不存在的AttributeError。
可选择的修复方案
- 方案1:锁定与本地一致的依赖版本
本地执行pip freeze | grep django-htmlmin查询当前使用的版本号,将requirements.txt中的django-htmlmin条目修改为带版本号的格式,例如django-htmlmin==0.10.0,避免Heroku自动拉取最新版。 - 方案2:适配新版
django-htmlmin的中间件配置
若要使用最新版依赖,将settings.py中间件配置中的htmlmin.middleware.MarkRequestMiddleware替换为htmlmin.middleware.HtmlMinifyMiddleware,同时保证该中间件放在django.middleware.common.CommonMiddleware之后,在settings.py中新增HTML_MINIFY = True配置开启压缩功能即可。 - 方案3:清理重复依赖
检查requirements.txt,不要同时声明htmlmin和django-htmlmin两个依赖,纯htmlmin包不含Django中间件实现,二者共存会导致依赖冲突,仅保留django-htmlmin即可。
验证步骤
修改完成后,本地先执行pip install -r requirements.txt覆盖安装依赖,启动Django服务确认运行正常后,再重新推送到Heroku部署即可。
内容的提问来源于stack exchange,提问作者Speed Junior
相关产品推荐
相关产品推荐

