Heroku部署Cookiecutter Django应用后admin管理页面404无法访问求助
Django Heroku环境Admin后台404问题排查思路
以下为优先级从高到低的排查方案:
- 确认生产环境ADMIN_URL配置值
Cookiecutter Django默认会从环境变量读取ADMIN_URL配置,本地环境默认值一般是admin/,但Heroku上可能未配置对应环境变量,或配置的路径和访问的不一致。可以在Heroku侧执行heroku config:get ADMIN_URL查看实际值,确认访问路径和该值完全匹配。 - 检查i18n多语言路径匹配问题
你的admin路由放在i18n_patterns内部,该块内的所有路由都会自动加上语言前缀,比如中文是/zh-hans/、英文是/en/。本地访问/admin/可能会自动跳转补全前缀,但生产环境如果USE_I18N配置关闭、或访问时未携带正确的语言前缀,就会返回404。可以尝试直接访问带语言前缀的admin路径验证,比如https://你的域名/en/你的ADMIN_URL值。 - 确认生产环境Admin相关应用是否正常注册
检查生产环境的INSTALLED_APPS配置,确认django.contrib.admin和django.contrib.auth没有被移除,部分Cookiecutter模板的生产环境专属配置可能会误关闭admin相关应用。 - 获取实际注册的admin路由地址验证
在Heroku上运行heroku run python manage.py shell,执行以下代码查看admin的实际解析路径:
输出的路径就是实际应该访问的admin地址,和你当前访问的路径对比即可确认是否是路径匹配问题。from django.urls import reverse print(reverse('admin:index')) - 检查静态资源配置是否引发路由冲突
确认生产环境关闭DEBUG的状态下,STATIC_ROOT、STATIC_URL配置正确,不会因为静态资源路由规则覆盖了admin的路由。
内容的提问来源于stack exchange,提问作者Philippe Haumesser
相关产品推荐
相关产品推荐

